python的文件操作
❶ python文件有哪些操作
使用文件:
文件迭代器是最好的读取行工具,文件也有个迭代器会自动在for循环,列表解析或者其他迭代语句中对文件进行逐行读取。
读取内容是字符串,而不是对象,文件读取的数据回到脚本时是一个字符串
close是通常选项,文件上下文管理器是一种替代方法。但close()是一个好习惯。
标准流,在sys模块中预先打开的文件对象
os模块中的描述文件
sockets、pipes和FIFO文件,文件类对象同步进程、网络通信
通过键来存取的文件,通过键直接存储的不变的python对象
Shell命令流,os.popen、subprocess.Popen这样的工具
第三方开源的文件类工具等
其他文件工具
open函数及其返回的文件对象是python脚本中通向外部文件的主要接口,但还有其他的类似工具:
❷ 关于python中的文件操作问题
思路
使用json模块,储存是最方便的,下面给出具体代码示例
代码
"""
我现在有一张列表,列表里边回是若干个字典答,这个列表可以作为参数给到一个函数里,打印出一张表格。
现在我把列表写到一个txt文件中,当然保存到文件中的是字符串形式,我再重新读取这个文件中的内容时,
之前的列表只能以字符串的形式取出,请问怎么把这个字符串再转换为之前的列表来使用?
"""
importjson
defprint_list(my_list):
print(my_list)
my_list=[
{
'name':'singi'
},
{
'name':'sunjun'
}
]
file_name='my_list.json'
#写入文件
withopen(file_name,'w')asf:
json.mp(my_list,f)
#读取文件
withopen(file_name)asf:
my_list_load=json.load(f)
print_list(my_list_load)
输出
[{'name':'singi'},{'name':'sunjun'}]
❸ python文件写操作
这样把
教你个简单的办法
python一般不会在原文件中操作的,一般会读出来版,操作,然后权再写入的。代码如下:
#encoding:gbk
insert='123'
#你想插入的字符串
line=''
#最终文件内容
f=open("1.txt","r")
i=f.readline()
#读取文件内容
f.close()
pre=i[0:3]
last=i[3:]
line=pre+insert+last
f=open("1.txt","w")
f.write(line)
f.close()
❹ 关于python里写文件的操作
fo.close()---你小括号没有。
fo = open("D:/text一.txt","w",encoding = 'utf-8')
ls = ['13','14','15']
fo.writelines(ls)
fo.close()文件在内d盘下面容
❺ python 文件读写
E:/hanhan/..html一看就不存在呀。
❻ Python如何用文件操作把执行结果保存到文件里
最简单的写法是用with,比如:
list1=['aaa','bbb','ccc']
with open('filename.txt','w')as fl:
for line in list1:
fl.write(line + '\n')
上面的运行结果会生成那个名字的文本,没有则会创建。我这里只是展示一下最简单的文本操作方法。请自行网络自己认真了解一下。小甲鱼视频里面有相关教程和许多关于这个的练习题,你也可网络看看。
❼ python文件操作问题
由于你写的是相对路径,运行时要注意当前工作目录是什么,在CMD中,就是前面提版示符的权路径。CMD的默认工作目录是当前用户目录,即C:\Users\用户名,此时运行你的python程序,那么open("yesterday.txt")将会试图在这个目录下寻找yesterday.txt文件,找不到则会报错。
❽ python文件读写问题
打开文件读取后,用split(',')得到包含所有数据的列表,然后切片处理你要的数据写入新文件
❾ python 文本文件处理
分隔日志文件存为小文件
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每个小文件中保存100000条数据
dataLine = sFile.readline()
tempData = [] #缓存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
for row in range(number):
tempData.append(dataLine) #将一行数据添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tempData) #将列表保存到文件中
tFile.close()
tempData = [] #清空缓存列表
print(tFilename + " 创建于: " + str(time.ctime()))
fileNum += 1 #文件编号
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
分类汇总小文件:
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #缓存列表
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
p_re = re.compile(r'(GET|POST)s(.*?)sHTTP/1.[01]',re.IGNORECASE) #用正则表达式解析数据
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #读入下一行数据
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\access.log1.txt","access")
Map("access\access.log2.txt","access")
Map("access\access.log3.txt","access")
3. 再次将多个文件分类汇总为一个文件。
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #缓存列表
p_re = re.compile(r'(.*?)(d{1,}$)',re.IGNORECASE) #用正则表达式解析数据
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有数据
subdata = p_re.findall(dataLine) #用空格分割数据
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #读入下一行数据
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
❿ python文件操作
这是使用迭代器的方法读取文件内容,这种方法的好处是占用内存空间较少。如果你使用readlines,read方法,它们实际上将整个文件内容读取到内存中,虽然你也可以逐行输出,但是你也可以跳着输出的(列表)。而你的这种方法-迭代器是不能直接跨行输出的,也就是说,你每次真的只从文件中读了一行,并且必须逐行读取,因为每次只读一行,所以占用内存极少,推荐的使用方法。