读写文件

简单的读取与写入

读取文件内容

hello.txt在同一目录下

hellofile = open('hello.txt', 'r')
hellocontent = hellofile.read()
print(hellocontent)
hellofile.close()

hellofile = open('hello.txt', 'r')
hellolines = hellofile.readlines()
print(hellolines)
print()
hellofile.close()

遇到的坑:必须要先关闭文件再重新打开才能使用 file.readlines() 函数,否则的话可以用filecontent.spiltlines()代替,但是不会包含每行结尾的'n'

输出结果:

写入文件

'a'表示以添加模式打开文件,而不是取代之前的字符串

hellofile = open('hello.txt', 'a')
hellofile.writelines('I\'m 20\n')
hellofile.close()

hellofile = open('hello.txt')
hellocontent = hellofile.read()
print(hellocontent)

运行结果:

使用shelve模块保存变量

使用shelve模块可以将python中的变量保存到二进制的shelf文件中,这样程序就可以从shelf文件恢复变量的数据

创建shelf文件

import shelve

shelvefile = shelve.open('mydata')
names = ['Jack', 'Mike', 'Tom']
shelvefile['names'] = names
shelvefile.close()

读取shelf文件

shelvefile = shelve.open('mydata')
print(shelvefile['names'])

运行结果:

值得注意,shelf文件打开后既可读又可写,而且shelf像字典一样也有keys()和values()方法,例如:

shelvefile = shelve.open('mydata')
print(list(shelvefile.keys()))
print(list(shelvefile.values()))

运行结果:

使用pprint.pformat()函数保存变量

使用pprint.pformat()函数可以将字符串写入到.py文件中,这个文件可以成为自己的模块,可以导入它使用存储在其中的变量

保存数据

import pprint
cats = [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]
pprint.pformat(cats)
file = open('mycats.py', 'w')
file.write('cats = '+pprint.pformat(cats)+'\n')
file.close()

读取数据

import mycats
print(mycats.cats)
print(mycats.cats[0])
print(mycats.cats[0]['name'])

运行结果:

组织文件

shutil模块

复制文件与文件夹

import shutil
import os

os.chdir('D:\\py')
shutil.copy('eg.txt', '.\\day3')
shutil.copy('eg.txt', 'eg1.txt')

shutil.copytree('Excel', 'Excel_backup')

初始目录结构:

运行后目录:

文件和文件夹的移动与改名

shutil.move('helloworld.py', 'Excel')
shutil.move('day1.py', 'Excel\\day1.py')

运行结果:

文件夹的操作同理

永久删除文件和文件夹

使用os模块可以删除一个文件或空文件夹,而使用shutil模块可以删除一个文件夹及其所有内容

  • 调用os.unlink(path) ,删除path处的文件
  • 调用os.rmdir(path),删除path处的空文件夹
  • 调用shutil.rmtree(path),删除path处的文件夹

send2trash模块

使用send2trash模块可以将文件或文件夹移动到回收站

使用方法:

import send2trash
send2trash.send2trash(path)

遍历文件树

目录结构

遍历

import os
for foldername, subfolders, filenames in os.walk('D:\\py\\test'):
    print(foldername)

    for subfolder in subfolders:
        print(subfolder)
    for filename in filenames:
        print(filename)
    print()

运行结果:

用zipfile模块压缩文件

读取zip文件

import os
import zipfile
os.chdir('D:\\py')
exampleZip = zipfile.ZipFile('test.zip')
print(exampleZip.namelist())
file = exampleZip.getinfo('004.txt')
print(file.file_size)
print(file.compress_size)
exampleZip.close()

运行结果:

解压缩

exampleZip.extract('004.txt')
exampleZip.extract('004.txt', 'day3')
exampleZip.extractall()

创建和添加到zip文件

newZip = zipfile.ZipFile('new.zip', 'w')
for foldername, subfolders, filenames in os.walk('Excel'):
    for filename in filenames:
        newZip.write('Excel\\'+filename, compress_type=zipfile.ZIP_DEFLATED)
newZip.close()

运行结果:

Last modification:July 12th, 2020 at 01:14 am