python文件操作

读文件

1、open('文件名') 打开某一个文件;这里的 '文件名' 可以是文件的绝对路径也可以是相对路径
f=open('data.txt')  【其实就是把'data.txt'定义成变量f表示且是打开的状态】
data=f.read()    【把文件data.txt的内容读进一个变量中data中保存】
举例:
f=open('filename')
data=f.read()
print(data)
f.close()   #打开文件后,最后要有关闭文件的动作

但一般不直接使用f=open("finename"),而使用:
with open("finename") as f:
    for line in f:
        print(line)

写文件

python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入:
f = file('output.txt', 'w')
1、'w'就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。
2、不加参数时,file为你默认为'r',reading,只读模式,文件必须存在,否则引发异常。
3、参数'a',appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。
举例:
a='I will go to work'
b=open('file.txt','w') #file.txt不存在会自动创建
b.write(a)
b.close()
写入内容到file.txt后再通过读该文件,打印出内容:
e=open('file.txt','r')
c=e.read()
print(c)
e.close()

处理文件中的数据

1、先把文件读进来:f = open('scores.txt')
2、取得文件中的数据。因为每一行都是一条学生成绩的记录,所以用readlines,把每一行分开,便于之后的数据处理:
lines=f.readlines()
f.close()
readline() #一次读取一行,返回字符串
readlines() #一次读取全部文件,将每一行字符串保存在一个列表中
3、对每一条数据进行处理。按照空格,把姓名、每次的成绩分割开:
for line in lines:
 data = line.split() #将变量line中的数据字符串以空格分开
4、
@1、如何把一个学生的几次成绩合并,并保存起来呢?我的做法是:对于每一条数据,都新建一个字符串,把学生的名字和算好的总成绩保存进去。最后再把这些字符串一起保存到文件中:
sum = 0
for score in data[1:]:
 sum += int(score)
result = '%s\t: %d\n' % (data[0], sum)
解释:
对于每一行分割的数据,data[0]是姓名,data[1:]是所有成绩组成的列表。
每次循环中,sum都要先清零。
score是一个字符串,为了做计算,需要转成整数值int。
result中,我加了一个制表符\t和换行符\n,让输出的结果更好看些。

@2、得到一个学生的总成绩后,把它添加到一个list中。
results.append(result)
results需要在循环之前初始化results = []
@3、全部成绩处理完毕后,把results中的内容保存至文件。因为results是一个字符串组成的list,这里我们直接用writelines方法:
output = file('result.txt', 'w')
output.writelines(results)
outpus.close()
writeline() #写一行
writelines() #写多行

网页页面循环输入读取文件中的内容

#coding=utf-8
from selenium import webdriver
import time

driver=webdriver.Firefox()
driver.maximize_window()
driver.get("https://www.baidu.com")
driver.implicitly_wait(5)

#读取文件jobx.txt的内容,所有内容一行一行的读取,并存入列表中,且为列表命名变量lines
f=open("./jobs.txt")
lines=f.readlines()
#循环这个列表变量lines
for line in lines:
    driver.find_element_by_xpath("//form[@id='form']/span[1]/input").send_keys(line) #循环列表变量输入该变量值
    driver.find_element_by_xpath("//form[@id='form']/span[2]/input").click()
    time.sleep(2)
    driver.find_element_by_xpath("//form[@id='form']/span[1]/input").clear()         #每输入框输入一次值后就清空一次
driver.close()

你可能感兴趣的:(python文件操作)