操作文件和目录
操作文件和目录
1、 如果要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成;比如,dir、cp等命令
如果要在Python程序中执行这些目录和文件的操作怎么办??其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数
>>>import os
>>>os.name
>>>'posix' 如果是posix,说明系统是Linux、Unix或Mac OS X;如果是nt,就是Windows系统
2、、环境变量:要获取某个环境变量的值,可以调用os.getenv()函数
>>>import os
>>>os.getenv('path')
3、Python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法
A、得到当前工作目录,即当前python脚本工作的目录路径:os.getcwd() ; os.path.abspath('.') 查看当前目录的绝对目录
B、返回指定目录下的所有文件和目录名:os.remove(‘C:\\Users\\zxq\\Desktop\\total’) 需要写入\\
C、函数用来删除一个文件:os.remove('C:\\Users\\zxq\\Desktop\\total\\test.txt') 在Windows系统中,删除一个正在使用的文件,将抛出异常。在Unix中,目录表中的记录被删除,但文件的存储还在。
D、检验给出的路径是否是一个文件:os.path.isfile('C:\\Users\\zxq\\Desktop\\total\\测试.txt') 返回true、False
F、检验给出的路径是否是一个目录:os.path.isdiir()
I、检验给出的路径是否是真地存在:os.path.exists()
file = 'c:/test.txt'
if os.path.exists(file):
os.remove(file)
else:
print 'no such file:%s' % file
os.chdir('C:\Users\zxq\Desktop') 切换到指定目录
os.getcwd() 查看当前所在目录
==========================================================================
打开文件:
f=opne( r 'C:User\ZXQ\Desktop\1.txt',‘r’) 返回一个文件对象
关闭文件:
f.close() 有打开文件必须也有关闭文件
读文件:
read()函数 1.txt内容为abc\n efg\n hij\n f.read(num) 参数num是读取文件中f中的字符数(从文件的开头)
f=opne( r 'C:User\ZXQ\Desktop\1.txt',‘r’)
f.read() 输出:‘\nefg\nhij’ 不会从第一行打印出来;指针在第一行
seek()函数,修改访问文件位置 格式:file.seek(offset,whence) 返回指针所在位置
将文件操作标记移到offset位置;这个offset一般相对于文件的开头来计算,一般为正
whence参数:0表示从头开始偏移 1表示从当前位置为原点偏移 2表示以文件末尾为原点进行
eg:f.seek(0,0) print(f.read()) 打印:abc\n efg\n hij\n
file.tell()用来显示现在文件读写指针的位置 返回指针所在位置
readline()函数读取一行
readlines()函数 是把文本的内容全部取出来,以行的形式 返回列表,再通过索引来获得某行
写文件:
f=opne( r 'C:User\ZXQ\Desktop\1.txt',‘w’)
f.write('asdfghjk') 到这步,文件1.txt中没有输入的字符串,原因参见下图;;write()参数只能是字符串
f.flush() flush()函数就是把缓冲区的内容刷新到磁盘文件中
正常情况下:用键盘打入一些字符后,会先在缓冲区保存,到了一定的大小后,才会写到磁盘上的文件(即写入1.txt中);flush()函数就是缓冲区大小不够写入磁盘时,把字符刷进磁盘中
write()函数不会自动换行,在字符串结尾不加‘\n’换行符号;只能自己写入内容时,自己加入\n
需求:写很多内容和很多行内容到一个文件中 file.writelines(list_of_string)函数把列表内的所有字符串都写入文件 列表[‘abc\n’ , 'efg\n' , 'hij\n']
eg:f=opne( r 'C:User\ZXQ\Desktop\1.txt',‘w’) list=[‘abc\n’ , 'efg\n' , 'hij\n']
f.writelines(list)
f.flush()
split()函数:
语法:str.split(str="",num=string.count(str))[n]
参数说明:
str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:表示选取第n个分片
f=opne( r 'C:User\ZXQ\Desktop\1.txt',‘w+’或‘a+’或‘r+’)
a+(append):读写模式打开,之后所做的读写操作都将从文件末尾开始
w+:读写模式打开,文件存在则将文件内容截断为0,文件不存在则创建文件
r+:读写模式打开文件,只能在文件存在时这样做,文件不存在,出(FileNotFoundError(异常): [Errno 2] No such file or directory: 'file.name')
关闭文件:close()
一般打开文件后,必须使用close函数关闭该文件
确保文件被关闭了,①应该使用try/finally语句
②还有一种方式with语句:使用必须导入如下模块;with语句打开文件并且将其赋值到变量上,之后就可以将数据写入语句体重的文件;文件的语句结束后会被自动关闭
from __future__ import with_statement
with open("××.txt") as somefile
do_something(somefile)