一、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。
1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
2.返回指定目录下的所有文件和目录名:os.listdir()
3.函数用来删除一个文件:os.remove()
4.删除多个目录:os.removedirs(r“c:\python”)
5.检验给出的路径是否是一个文件:os.path.isfile()
6.检验给出的路径是否是一个目录:os.path.isdir()
7.判断是否是绝对路径:os.path.isabs()
8.检验给出的路径是否真地存:os.path.exists()
9.返回一个路径的目录名和文件名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt') 
10.分离扩展名:os.path.splitext()
11.获取路径名:os.path.dirname()
12.获取文件名:os.path.basename()
13.运行shell命令: os.system()
14.读取和设置环境变量:os.getenv() 与os.putenv()
15.给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
16.指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
17.重命名:os.rename(old, new)
18.创建多级目录:os.makedirs(r“c:\python\test”)
19.创建单个目录:os.mkdir(“test”)
20.获取文件属性:os.stat(file)
21.修改文件权限与时间戳:os.chmod(file)
22.终止当前进程:os.exit()
23.获取文件大小:os.path.getsize(filename)
二、文件操作方法大全:
1.os.mknod("test.txt") #创建空文件
2.fp = open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件
3.关于open 模式:

复制代码 代码如下:
w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )

fp.read([size]) #size为读取的长度,以byte为单位
fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush() #把缓冲区的内容写入硬盘
fp.fileno() #返回一个长整型的”文件标签“
fp.isatty() #文件是否是一个终端设备文件(unix系统中的)
fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点
fp.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
三、目录操作方法大全
1.创建目录
os.mkdir("file") 
2.复制文件:
shutil.copyfile("oldfile","newfile") #oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
3.复制文件夹:
4.shutil.copytree("olddir","newdir") #olddir和newdir都只能是目录,且newdir必须不存在
5.重命名文件(目录)
os.rename("oldname","newname") #文件或目录都是使用这条命令
6.移动文件(目录)
shutil.move("oldpos","newpos") 
7.删除文件
os.remove("file")
8.删除目录
os.rmdir("dir") #只能删除空目录
shutil.rmtree("dir") #空目录、有内容的目录都可以删
9.转换目录
os.chdir("path") #换路径
四、文件综合操作实例
将文件夹下所有图片名称加上'_fc'
python代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目录与文件
        lists = file_path[1].split('.'#分割出文件与文件扩展名
        file_ext = lists[-1#取出后缀名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意这里的i是一个陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用
  
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
= 0
change_name(img_dir)
= time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))

代码如下:

程序运行耗时:0.11
总共处理了 109 张图片

1 import os
2 '''获得当前路径
3 '''
4 cwd=os.getcwd()
5 print(cwd)
8 '''
9 得到当前文件夹下的所有文件和文件夹
10 '''
11 print(os.listdir())
14 '''
15 delete file
17 os.remove('sw724.vaps')
18 print(os.listdir())
22 删除单个目录和多个目录
23 '''
24 os.removedir()
25 os.removedir()
29 检查是否是文件/文件夹
30 '''
31 print(os.path.isfile('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps'))
32 print(os.path.isdir('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps')) 36 检查文件路径是否存在
39 print(os.path.exists('/Users/liuxiaolong/PycharmProjects/untitled/iiii'))
42 分离文件名
43 分离扩展名
46 [dirname,filename]=os.path.split('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps')
47 print(dirname,"\n",filename)
48
49 [fname,fename]=os.path.splitext('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps')
50 print(fname,"\n",fename)
52 '''
53 获得文件路径
54 获得文件名
55 获得当前环境
57 print("get pathname:",os.path.dirname('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps'))
58 print("get filename:",os.path.basename('/Users/liuxiaolong/PycharmProjects/untitled/sw724.vaps'))
59 print(os.getenv)

一、修改原文件方式

 1 def alter(file,old_str,new_str):
2 """
3 替换文件中的字符串
4 :param file:文件名
5 :param old_str:就字符串
6 :param new_str:新字符串
7 :return:
8 """
9 file_data = ""
10 with open(file, "r", encoding="utf-8") as f:
11 for line in f:
12 if old_str in line:
13 line = line.replace(old_str,new_str)
14 file_data += line
15 with open(file,"w",encoding="utf-8") as f:
16 f.write(file_data)
17
18 alter("file1", "09876", "python")

二、把原文件内容和要修改的内容写到新文件中进行存储的方式

2.1 python字符串替换的方法,修改文件内容

import os
def alter(file,old_str,new_str):
"""
将替换的字符串写到一个新的文件中,然后将原文件删除,新文件改为原来文件的名字
:param file: 文件路径
:param old_str: 需要替换的字符串
:param new_str: 替换的字符串
:return: None
"""
with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
for line in f1:
if old_str in line:
line = line.replace(old_str, new_str)
f2.write(line)
os.remove(file)
os.rename("%s.bak" % file, file) alter("file1", "python", "测试")

1
2
3
4
5
6
import os
#获取当前工作目录
>>>os.getcwd()
#更改当前工作目录
>>>os.chdir('d:\')
>>>os.getcwd()

2.2 python 使用正则表达式 替换文件内容 re.sub 方法替换

1 import re,os
2 def alter(file,old_str,new_str):
3
4 with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
5 for line in f1:
6 f2.write(re.sub(old_str,new_str,line))
7 os.remove(file)
8 os.rename("%s.bak" % file, file)
9 alter("file1", "admin", "password")

最新文章

  1. 从AdventureWorks学习数据库建模——国际化
  2. Mac 用户组:staff、 wheel、admin 的区别
  3. 【jquery】javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象
  4. 解决[warn] _default_ VirtualHost overlap on port 80, the first has precedence问题
  5. php UNIX时间戳转换为指定日期格式
  6. 常见Android面试题及答案(详细整理)
  7. 关于PHP输出字符串多了两个字节的BUG
  8. Iconfont 在HTML中的使用
  9. Android单元测试之三:使用模拟框架模拟依赖
  10. ELK-Logstash采集日志和输送日志流程测试
  11. Vue学习之路1-集成环境安装
  12. iso移动端input的bug解决(vue)
  13. 阿里云服务器配置SSL证书成功开启Https(记录趟过的各种坑)
  14. 直播框架ijkplayer
  15. 判断页面是否添加了W3C声明
  16. Spring Cloud Config 服务端与 客户端之间的关系
  17. String中hashCode方法的线程安全
  18. [UE4]C++调用蓝图函数:BlueprintImplementableEvent函数说明符用法
  19. Dijkstra算法---HDU 2544 水题(模板)
  20. MVVM特点、源(数据)与目标(如:控件等)的映射

热门文章

  1. 数据库布尔型状态字段互斥性的SQL更新操作
  2. 【BZOJ1855】[Scoi2010]股票交易 DP+单调队列
  3. C++编译遇到参数错误(cannot convert parameter * from 'const char [**]' to 'LPCWSTR')
  4. 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
  5. nginx排错error while loading shared libraries:libpcre.so.1:cannot open shared object file:No such file or directory
  6. 探讨Java I/O类和接口
  7. angular4 form表单验证
  8. HDU 3450 Counting Sequences(线段树)
  9. PAT 甲级 1026 Table Tennis(模拟)
  10. windows下安装google protocbuf