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()

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

  1. python编程16章教程_Python学习笔记__16.2章 TCP编程

    # 这是学习廖雪峰老师python教程的学习笔记 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算 ...

  2. python如何修改excel数据库_python学习笔记-day7-2-【python从mysql数据库导数据到excel,读excel,修改excel】...

    这节说下如何用python把数据库里的数据导出到excel里,并如何读取excel, 修必excel等操作. 一.用python把数据库里的数据导出到excel里 1.导入如下的模块,没有的话需要安装 ...

  3. python里while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

  4. python中while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

  5. python中sn的意思_python学习笔记

    学习资料:<简明 Python 教程.pdf>Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程. 特点:1.简单 2.易学 3.开源, ...

  6. python中if语句使用_Python学习笔记之if语句的使用示例

    前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...

  7. python数值类型的操作_Python学习笔记,数值类型及操作

    数值类型及操作 int类型数值大小不限: 整数的进制 1,整数类型正常为10进制 2,开头加0b or 0B 为二进制 3,加0o or 0O 为8进制 4,加0x 为16进制 浮点运算中存在不确定尾 ...

  8. python条件表达式连起来写一段话_python学习笔记十三条件表达式应用

    彩票游戏: 当号码相等的时候越多,奖金就越多. 而彩票的中奖号码是随机的. 模拟彩票的工作原理,随机产生2个数,然后用户输入两个数字,通过数字的匹配来判断用户是否中奖. 设定以下规则: 当两个数完全相 ...

  9. python程序设计方法学_python学习笔记(12)--程序设计方法学

    计算思维: 逻辑思维:推演和演绎 实证思维:实验和验证,引力波->实验 计算思维:设计和构造,计算机为代表,汉诺塔递归. 计算思维特征 抽象和自动化,抽象问题的计算过程,利用计算机自动化求解. ...

最新文章

  1. 使用nohup在后台运行scp
  2. UVa11426——欧拉函数
  3. Xcode:Foundation框架找不到,或者是自动提示出现问题
  4. python2和python3的默认编码_python2和python3哪个版本新
  5. java实现语音聊天_java 语音聊天核心代码
  6. PHPExcel导出excel 复制代码
  7. 为什么用JS取不到cookie的值?解决方法如下!
  8. 【解题报告】SRM-08
  9. Xcode12 “PushKit apps that use VoIP push must link either CallKit or IncomingCallNotifications
  10. 社工查询-最强社工查询网址汇总
  11. (已解决)解决第三方平台访问Vue项目cue-router把#号变成百分号23导致项目404的问题
  12. Curious Cupid
  13. get、put、post、delete四大请求的含义与区别个人理解和解释
  14. Workman使用记录----
  15. 全球及中国医疗众筹行业发展战略与投资规划分析报告2022-2028年
  16. 【离散数学】二元关系中的传递关系与非传递关系
  17. 微信小程序业务好(做)跑吗?我想做小程序代理业务
  18. 谈谈个人对SnmpSharpNet的实践经验
  19. 数字电路基础知识——乘法器的设计(二)( 串行、流水线、有符号数八位乘法器)
  20. 证券从业考试科目如何备考?出题方式是什么?

热门文章

  1. 路由协议OSPF知识点汇总
  2. skynet 控制台管理使用技巧
  3. 位操作符:位与、|位或、^异或、~求反、左移位、带符号右移位、无符号右移位...
  4. Could not find Developer Disk Image
  5. Activity与Fragment的生命周期详解
  6. tomcat源码学习
  7. 编程之美2.10:寻找数组中的最大值和最小值
  8. OpenGL超级宝典笔记——累积缓冲区与其他颜色操作
  9. 毕业设计:Springboot实现疫情宿舍学生管理系统
  10. java jdbc连接数据库的设计