最新消息:

Python文件操作

IT技术 ipcpu 699浏览 0评论

Python文件操作.md

一、文件操作

Python对文件进行操作,一般都是调用os模块、shutil模块。常用功能如下:
os.remove(file_name); 删除文件
os.mkdir("newdir"); 创建目录
os.getcwd(); 显示当前目录(Python脚本工作的目录)
os.listdir(); 返回指定目录下的所有文件和目录名
os.path.isfile();检验给出的路径是否是一个文件
os.path.isdir();检验给出的路径是否是一个目录
os.path.exists();检验给出的路径是否存在
os.path.split();返回一个路径的目录名和文件名

os.path.split('/home/swaroop/byte/code/poem.txt')
输出:('/home/swaroop/byte/code', 'poem.txt') 

os.path.splitext();分离扩展名
os.path.dirname();获取路径名
os.path.basename();获取文件名
os.getenv(); os.putenv(); 读取和设置环境变量
os.linesep;给出当前平台使用的行终止符: Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

fileappend=open('/tmp/new.txt','a')
fileappend.write('this is content' + os.linesep)
fileappend.close()

os.path.getsize(filename);获取文件大小
os.rmdir("dir");只能删除空目录
shutil.rmtree("dir");空目录、有内容的目录都可以删

二、读文件

读写文件之前,必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

file object = open(file_name [, access_mode][, buffering])

文件打开有以下几种模式:

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。(要求文件必须存在)
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。(覆盖写)
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。(追加写)
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)

注意1:带了+号的,可以同时进行读写操作。
注意2:Python2中,U通用换行模式(Universal new line mode)。该模式会把所有的换行符(\r \n \r\n)替换为\n。但Python3中,可以通过open函数的newline参数来控制Universal new line mode:读取时候,不指定newline,则默认开启Universal new line mode,所有\n, \r, or \r\n被默认转换为\n ;写入时,不指定newline,则换行符为各系统默认的换行符(\n, \r, or \r\n, )
读取文件样例:

file_object = open('test.txt','rU')
try: 
    for line in file_object:    
        print(line.strip())
#这样操作,line会带着换行符,而print会自动加上换行符,就会出现2个换行。可以使用strip()去除。
finally:
    file_object.close()

调用read()方法会一次性读取文件的全部内容,如果文件有10G,内存就爆了,不太友好。
调用readline()方法可以每次读取一行内容。
调用readlines()方法一次读取所有内容并按行返回list。
所以这里直接去遍历了文件对象,文件对象被视为一个迭代器,会自动的采用缓冲IO
和内存管理。
因为每次都要确认文件关闭,所以使用了try...finally语句,Python也准备了with语句,无需考虑文件的
close()方法,如下

with open('abc.txt', 'r') as f:
    for line in f:
        print(line.strip())

三、写文件

写文件相关的方法有如下:
write() 方法写入数据
writelines() 方法写入多行
flush() 方法清理缓存
样例如下:

with open('123.txt', 'a') as f:
    f.write('helloworld1!\n')
    f.writelines('helloworld2!\n')
    print('helloworld3!',file=f)

参考资料

https://www.zhihu.com/question/19751023
https://www.cnblogs.com/ymjyqsx/p/6554817.html
http://yuanph.org/2016/09/13/python-%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86/

转载请注明:IPCPU-网络之路 » Python文件操作

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址