python写完程序保存_Python学习笔记——文件处理

1.文件路径

1.1 不同系统环境下的路径

1.2 当前工作目录

1.3 绝对路径和相对路径

1.4 新建文件夹—— os.makedirs()

2.文件的读写

2.1 打开文件

2.2 读写文件

3.文件的操作

3.1 shutil模块简介

3.2 删除文件

3.3 遍历目录树 os.walk(dir)

3.4 zipfile模块——操作压缩文件

1. 文件路径

1.1 不同系统环境下的路径

不同系统的文件分隔符可能会不同,Window下,使用""作为文件分隔符,OS 和Linux下使用"/",在处理文件的时候,必须处理这中情况。

使用os.path.sep 来获取文件分隔符

使用os.path.join()来获取路径。

import os

path = os.path.join("dir1", "dir2", "dir3", "file1")

print path

path2 = os.path.join("user/bin/python", "newFile")

print path2

得到:

dir1/dir2/dir3/file1

user/bin/python/newFile

1.2 当前工作目录

每个运行在计算机上的程序,都有一个“当前工作目录”,或cwd。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。利用os.getcwd()函数,可以取得当前工作路径的字符串,并可以利用os.chdir()改变它。

>>> import os

>>> os.getcwd()

'/Users/chelsea/Documents/workspace/test/src/mcx/basePython'

>>> os.chdir('/Users/chelsea/Documents/workspace/test/src/mcx/test')

>>> os.getcwd()

'/Users/chelsea/Documents/workspace/test/src/mcx/test'

os.chdir(newPath) newPath必须是已存在的路径,否则会抛出异常:OSError: [Errno 2] No such file or directory

1.3 绝对路径和相对路径

绝对路径:从根文件夹开始

相对路径:相对于当前工作目录开始

(.)、(..) 文件夹:不是真正的文件夹,(.)表示该目录的缩写,(..) 表示符文件夹。如,当前目录'/Users/chelsea/Documents/workspace/test/src/mcx/basePython', 目录下有test.py文件,则可以表示为.\test.py; "..\test"表示文件夹'/Users/chelsea/Documents/workspace/test/src/mcx/test'。

1.4 新建文件夹—— os.makedirs()

import os

os.makedirs('/Users/chelsea/Documents/workspace/test/src/mcx/newfolder')

os.path模块常用方法

os.path.abspath(path) 回参数的绝对路径的字符串。

os.path.isabs(path),是否是一个绝对路径。

os.path.relpath(path,start) 返回相对start的相对路径的字符串。如果没有提供start,就使用当前工作目录作为开始路径。

os.path.dirname(path) 返回路径字符串(最后一个/前的文字)。

os.path.basename(path) 返回文件名(最后一个/后的文字)。

os.path.split(calcFilePath) 获取路径和文件名,返回一个元组,元组有两个值,第一个值为路径,第二个值为文件名。

os.path.getsize(path) 获取文件大小。

os.path.exists(path) 文件是否存在。

os.path.isfile(path) 是否是文件

os.path.isdir(path) 是否是文件夹

os.listdir(path) 获取 path下的文件列表。返回一个列表,值为文件名。

2. 文件的读写

在Python中,读写文件有3个步骤:

调用open()函数,返回一个File对象。

调用File对象的read()或write()方法。

调用File对象的close()方法,关闭该文件。

2.1 打开文件

open(path) 以只读的方式打开文件,若文件不存在抛出异常:IOError: [Errno 2] No such file or directory。不可以写入数据。

open(path, "r") 同上。

open(path, "w") 以只写的方式打开文件,若文件则创建文件。读数据抛出异常:IOError: File not open for reading

mode char

含义

'r'

open for reading (default)

'w'

open for writing, truncating the file first

'x'

open for exclusive creation, failing if the file already exists

'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 newlines mode (deprecated)

path = '/Users/chelsea/Documents/workspace/test/test.txt';

file = open(path)

2.2 读写文件

file.read() 将文件内容看成是单个大字符串,改方法返回这个字符串。

file.readlines() 返回一个列表,列表的每个元素是文件的每一行。

file.write(content)

shelve模块保存变量

shelve模块可以将程序中的变量保存到数据库中。

保存数据:

import shelve

# 将会在运行目录下产生一个mcxconfig.db

configFile = shelve.open('mcxConfig')

configFile['name'] = 'machenxi'

configFile.close()

读取数据

import shelve

configFile = shelve.open('mcxConfig')

print configFile['name']

pprint.pformat()保存变量

import 语句导入的模块本身也是Python脚本,可以使用pprint.pformat()来保存一个Python脚本,以便在其他Python程序中使用。

写入:

import pprint

cats=[{'name':'Zophie','desc':'chubby'},{'name':'Pooka','desc':'fluffy'}]

pprint.pformat(cats)

fileObj=open('myCats.py','w')

fileObj.write('cats='+pprint.pformat(cats)+'\n')

fileObj.close()

读取:

import myCats

priny(myCats.cats)

运行结果: [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]

3. 文件的操作

3.1 shutil模块简介

使用shutil模块,可以对文件进行复制、移动、改名、删除。

shutil.copy(source, destination) 将路径source处的文件复制到路径destination处的文件夹,返回新的路径。(复制单个文件)

shutil.copyTree(source, destination) 复制整个文件夹,返回新的路径。

shutil.move(source, destination) 移动文件夹,返回新的路径,有重名文件,旧文件会被覆盖。destination可以是一个文件路径,移动后文件将被重命名;destination是文件夹路径时必须存在,否则会异常。

3.2 删除文件

3.2.1 永久删除文件

os.unlink(path) 删除path处文件。

os.rmdir(path) 删除path处的文件夹,文件夹必须为空。

shutil.rmtree(path) 删除path文件,包含的文件夹和文件都会被删除。

3.2.2 send2trash模块——把文件放到回收站

import send2trash

send2trash.send2trash(path)

3.3 遍历目录树 os.walk(dir)

os.walk(dir) os.walk()函数可以用于for循环语句,遍历目录树,就像使用range()函数遍历一个范围的数字一样。

os.walk()在循环的每次迭代中,返回3个值:

1.当前文件夹名称的字符串。(是指for循环当前迭代的文件夹)

2.当前文件夹中子文件夹的字符串的列表。

3.当前文件夹中文件的字符串的列表。

程序的当前工作目录,不会因为os.walk()而改变。

import os

for folderName, subfolders, filenames in os. walk(' C:\\ delicious'):

print(' The current folder is ' + folderName)

for subfolder in subfolders:

print(' SUBFOLDER OF ' + folderName + ': ' + subfolder)

for filename in filenames:

print(' FILE INSIDE ' + folderName + ': '+ filename) print('')

3.4 zipfile模块——操作压缩文件

3.4.1 读取ZIP文件

import zipfile, os

exampleZip = zipfile.ZipFile('example.zip')

exampleZip.namelist() # 获取所有文件夹以及文件夹下的字符串列表 ['spam.txt', 'cats/', 'cats/catnames. txt', 'cats/zophie.jpg']

spamInfo = exampleZip. getinfo(' spam. txt')

spamInfo.file_ size   # 获取文件实际大小

spamInfo.compress_size # 获取文件压缩后的大小

exampleZip. close()

3.4.3 解压缩ZIP文件

import zipfile, os

exampleZip = zipfile.ZipFile('example.zip') # 解压到当前工作目录

exampleZip = zipfile.ZipFile('example.zip', destinationPath) # 解压到指定目录

exampleZip.extractall()

exampleZip. close()

3.4.3 压缩ZIP文件

import zipfile

newZip = zipfile. ZipFile('new.zip', 'w') # 'w'模式会覆盖new.zip文件里的内容,若要内new.zip中添加一个文件,使用'a'。

newZip.write('spam.txt', compress_type= zipfile.ZIP_ DEFLATED)

newZip.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值