1.创建文本文件
def make_file():
f = open("test.txt", "w")
f.write("Hello World")
f.close()
这段代码创建了一个test.txt的文件,并表明是写的属性(默认是读的属性),并写入了Hello World的字段,这个文件的位置要看你的工作路径,如果使用是python自带的那个编译器,创建的文件一般是在
C://Python34 (这里是因为我的版本是3.4的),如果是使用的pycharm,则就在你的项目的下面。因为这里注明了是使用的写的属性,如果这个文件不存在的话就会创建一个新的文件,如果存在的话会把原来的删除然后创建一个新的文件。
下面这种方法可以判断一个文件是存在:
import os
def make_file():
if os.path,isfile("test.txt"):
print("file are already exists!")
else:
f = open("test.txt", "w")
f.write("Hello World")
f.close()
这里使用os.path.isfile来判断这个文件是否存在,然后创建这个文件
2.向文件中追加数据
这里向文件中追加数据其实是很简单的,只要修改open第二个参数的属性就可以实现,使用a这个属性就行了:
def add_file:
a = open("test,txt", "a")
a.write("我是第二行")
a.close()
这里修改第二个属性可以实现很多的有趣的功能,下面展示的是源码里面的注释部分:
========= ===============================================================
Character Meaning
——— —————————————————————
‘r’ open for reading (default)
‘w’ open for writing, truncating the file first
‘x’ create a new file and open it for writing
‘a’ open for writing, appending to the end of the file if it exists
‘b’ binary mode
‘t’ text mode (default)
‘+’ open a disk file for updating (reading and writing)
‘U’ universal newline mode (deprecated)
========= ===============================================================
翻译过来:
‘r’ 打开文件为只读模式(默认的模式)
‘w’ 打开文件为写模式,会首先删除原来的文件
‘x’ 创建一个新的文件,并且打开这个文件为写模式
‘a’ 打开文件为写模式,如果文件存在,会把数据追加到文件的末尾
‘b’ 二进制模式
‘t’ 文本模式(默认)
‘+’ 打开硬盘中的一个文件进行读写
‘U’ 通用的换行模式(不建议使用)
3.读取文件内容
def read_file():
f = open("test.txt", "r")
print(f.readline())
f.close()
这个是读取文件中的一行的内容,读取的时候遇到“\n”结束
.
def read_file():
f = open("test.txt", "r")
text = f.read()
print(text)
f.close()
这个是读取文件中的全部的内容,打印出来的包含文件里面原来的格式
.
def print_line_lenght():
f =open("test.txt", "r")
text = f.readlines()
for line in text:
print(len(line))
使用这个方法可以把文件中数据以元组的形式返回,每一行数据变成了元组里面的一个元素,使用上面的代码,可以打印出来文件里面的每一行字符的多少
1.路径
这里推荐一篇博客,总结的挺全面的:python os.path模块常用方法详解
下面使用都是加上import os
代码的
os.path.join()
可以用来将目录名称组合成路径,里面的参数个数大于等于2个,同时使用多个参数的时候,最后一个绝对路径会覆盖前面的所有的路径:
print(os.path.join("Hello", "f:\\", "python\\", "temp"))
输出结果是:
f:\\python\\temp
这里主要辨析一下os.path.isfile() 、 os.path.isdir() 、 os.path.exists()
os.path.isfile():这个只是判断路径里面的的文件是否存在,存在文件的话返回True
os.path.isdir():这个只是判断路径里面的目录是否存在,目录存在就返回True
os.path.exists():这个是判断路径存在不存在,不区分是文件还是目录
下面是示例:
print(os.path.isfile("F:\\test_Python\\test.txt"))
print(os.path.isdir("F:\\test_Python\\test.txt"))
print(os.path.exists("F:\\test_Python\\test.txt"))
.打印的结果是:
True
False
True
这是另为一个示例:
print(os.path.isfile("F:\\test_Python"))
print(os.path.isdir("F:\\test_Python"))
print(os.path.exists("F:\\test_Python"))
打印的结果是:
False
True
True
通过这两个比较,就能看出来他们三个的不同了
2.目录
使用os.listdit()可以来获取目录里面的内容,比如说,我用print(os.listdir("c:\\"))
打印出来的是:
['$360Section', '$Recycle.Bin', '360SANDBOX', '360驱动大师目录', 'Boot', 'boot.ini', 'bootmgr', 'BOOTNXT', 'bootsqm.dat', 'Documents and Settings', 'DOCUME~1', 'Drcom', 'GHLDR', 'ghldr.mbr', 'hiberfil.sys', 'install.log', 'InstallConfig.ini', 'Intel', 'Keil', 'LJP1100_P1560_P1600_Full_Solution', 'log', 'log_network.txt', 'MSOCache', 'package', 'pagefile.sys', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'Python34', 'QLDownload', 'QMDownload', 'Recovery', 'RECYCLER', 'swapfile.sys', 'SymCache', 'System Volume Information', 'Temp', 'Users', 'Windows', 'xmlrpc_error.log', 'YYFESOYKMV', '~1']
这是我C盘目录下面的所有的文件。使用sorted()来对生成的元组可以排序,默认是按字母的先后顺序来排的:print(sorted(os.listdir("c:\\")))
,打印出来的结果就是排好顺序的元组。
使用这个方法,我们可以使用递归的方法对一个目录进行打印,可以把整个目录里面的文件都打印出来:
def print_tree(path):
for name in os.listdir(path):
full_path = os.path.join(path, name)
print(full_path)
if os.path.isdir(full_path):
print_tree(full_path)
3.对目录的重命名、移动、复制、删除
下面的代码默认导入了import shutil
1.使用shutil.move()可以实现把一个文件移动到另外一个目录下面,或者使用这个为一个文件进行新的命名,例如:
shutil.move("old_file.txt", "C:\\data\\temp")
2.使用shutil.copy()可以实现把一个文件复制到一个新的目录下面,或者使用这个创建一个新的名称的文件,例如:
shutil.copy("old_file.txt", "C:\\data\\temp")
3.使用shutil.remove()来删除文件
os.remove("junk.txt")
注意:使用os.rename()也可以来进行重命名,但是使用这个方法没法进行文件的移动,所以一般并不使用这个方法。
4.删除和创建目录
1.创建一个虚拟的目录
os.mkdir("C:\\photo\\Hello\\temp")
但是如果C:\photo\Hello这个目录不存在的话,那么就会引发异常。这里建议使用os.makedirs()
这个方法可以创建多重的目录
2.删除目录
os.rmdir("C:\\photo\\Hello\\temp")
这个只能删除空的目录,上面的代码只会删除temp这个目录
使用shutil.rmtree("C:\\photo\\Hello\\temp")
可以直接删除该目录,不管目录下面有没有文件和子目录