1.遍历文件夹和文件 

Python代码  

import os
import os.path
rootdir = "d:/test"
for parent,dirnames,filenames in os.walk(rootdir):
# case 1:
for dirname in dirnames:
print ( "parent is:" + parent)
print ( " dirnames is:" + dirname)
# case 2:
for filename in filenames:
print ( " parent is:" + parent)
print ( " filename with full path:" + os.path.join(parent,filename))
Python代码
import os
import os.path
rootdir = "d:/test"
for parent,dirnames,filenames in os.walk(rootdir):
# case 1:
for dirname in dirnames:
print ( "parent is:" + parent)
print ( " dirnames is:" + dirname)
# case 2:
for filename in filenames:
print ( " parent is:" + parent)
print ( " filename with full path:" + os.path.join(parent,filename))

知识点: 

   1. os.walk 返回一个三元组,其中dirnames是所有文件夹名字,filenames是所有文件的名字,parent表示父目录。 

   2. case 1 演示如何遍历所有目录 

   3. case 2 演示如何遍历所有文件 

   4. os.path.join(dirname,filename):将"/test/java"和"helloworld.java"变成/test/java/helloworld.java 

2.复制文件 


Python代码  

import shutil
import os
import os.path src = "d:\\test\\test1.txt"
dst = "d:\\test\\test2.txt"
dst2 = "d:/test/test.txt" dir1 = os.path.dirname(src) print ("dir1 %s" %s dir1) if(os.path.exists(src) == False):
os.makedirs(dir1) f1 = open(src," w")
f1.write( "line a\n" )
f1.write( "line b\n" )
f1.close(); shutil.copy(src,dst)
shutil.copyfile(src,dst2)
f2 = open(dst," r ")
for line in f2:
print(line)
f2.close() #测试复制文件夹树
try:
srcDir = "d:/test1"
dstDir = "d:/test2"
# 如果dstDir已经存在,那么shutil.copytree方法会报错
# 这也意味着你不能直接用d:作为目标路径
shutil.copytree(srcDir,dstDir)
except Exception as err:
print (err)
#Python代码
import shutil
import os
import os.path src = "d:\\test\\test1.txt"
dst = "d:\\test\\test2.txt"
dst2 = "d:/test/test.txt" dir1 = os.path.dirname(src) print ("dir1 %s" %s dir1) if(os.path.exists(src) == False):
os.makedirs(dir1) f1 = open(src," w")
f1.write( "line a\n" )
f1.write( "line b\n" )
f1.close(); shutil.copy(src,dst)
shutil.copyfile(src,dst2)
f2 = open(dst," r ")
for line in f2:
print(line)
f2.close() #测试复制文件夹树
try:
srcDir = "d:/test1"
dstDir = "d:/test2"
# 如果dstDir已经存在,那么shutil.copytree方法会报错
# 这也意味着你不能直接用d:作为目标路径
shutil.copytree(srcDir,dstDir)
except Exception as err:
print (err)

知识点: 

   1. shutil.copyfile:如何复制文件 

   2. os.path.exists: 如何判断文件夹是否存在 

   3. shutil.copytree: 如何复制目录树 

3.分割路径和文件名 

Python代码  

import os.path
#常用函数有三种:分隔路径,找出文件名,找出盘符(window系统),找出文件的扩展名。
spath = "d:/test/test.7z" # case 1:
p,f = os.path.split(spath);
print ( "dir is:" + p)
print ( " file is:" + f)
# case 2:
drv,left = os.path.splitdrive(spath);
print ( " driver is:" + drv)
print ( " left is:" + left) # case 3:
f,ext = os.path.splitext(spath);
print ( " f is: " + f)
print ( " ext is:" + ext)
Python代码
import os.path
#常用函数有三种:分隔路径,找出文件名,找出盘符(window系统),找出文件的扩展名。
spath = "d:/test/test.7z" # case 1:
p,f = os.path.split(spath);
print ( "dir is:" + p)
print ( " file is:" + f)
# case 2:
drv,left = os.path.splitdrive(spath);
print ( " driver is:" + drv)
print ( " left is:" + left) # case 3:
f,ext = os.path.splitext(spath);
print ( " f is: " + f)
print ( " ext is:" + ext)

知识点: 

  1. 这是哪个函数都返回二元组 

  2. case1 分隔目录和文件名 

  3. case2 分隔盘符和文件名 

  4. case3 分隔文件和扩展名 

函数总结

引用

1. os.walk(spath) 

2. os.path.split(spath) 

3. os.path.splitdrive(spath) 

4. os.path.splitext(spath) 

5. os.path.join(path1,path2) 

6. os.path.dirname(path) 

7. os.path.exists(path) 

8. shutil.copyfile(src, dst) 

9. shutil.copytree(srcDir, dstDir) 

4、文件备份程序 

Python代码  

import  os
import shutil
import datetime
'''''
作用:将目录备份到其他路径。
实际效果:
假设给定目录"/media/data/programmer/project/python" ,
备份路径"/home/diegoyun/backup/“ ,
则会将python目录备份到备份路径下,形如:
/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz.. 用法:更改这两个参数.
backdir:备份目的地.
copydirs:想要备份的文件夹.
''' def mainLogic():
# add dirs you want to copy
backdir = " d:\\test "
print (backdir) copydirs = []
copydirs.append( " d:\\temp " );
# copydirs.append("d:\\test"); print ( " Copying files =================== " )
start = datetime.datetime.now() # gen a data folder for backup
backdir = os.path.join(backdir,start.strftime( " %Y-%m-%d " ))
# print("backdir is:"+backdir) kc = 0
for d in copydirs:
kc = kc + copyFiles(d,backdir) end = datetime.datetime.now()
print ( " Finished! =================== " )
print ( " Total files : " + str(kc) )
print ( " Elapsed time : " + str((end - start).seconds) + " seconds " ) def copyFiles(copydir,backdir):
prefix = getPathPrefix(copydir)
# print("prefix is:"+prefix ) i = 0
for dirpath,dirnames,filenames in os.walk(copydir):
for name in filenames:
oldpath = os.path.join(dirpath,name)
newpath = omitPrefix(dirpath,prefix)
print ( " backdir is: " + backdir )
newpath = os.path.join(backdir,newpath)
print ( " newpath is: " + newpath) if os.path.exists(newpath) != True:
os.makedirs(newpath)
newpath = os.path.join(newpath,name)
print ( " From: " + oldpath + " to: " + newpath)
shutil.copyfile(oldpath,newpath)
i = i + 1
return i def getPathPrefix(fullpath):
# Giving /media/data/programmer/project/ , get the prefix
# /media/data/programmer/
l = fullpath.split(os.path.sep)
# print(str(l[-1]=="")
if l[ - 1 ] == "" :
tmp = l[ - 2 ]
else :
tmp = l[ - 1 ]
return fullpath[0:len(fullpath) - len(tmp) - 1 ] def omitPrefix(fullpath,prefix):
# Giving /media/data/programmer/project/python/tutotial/file/test.py ,
# and prefix is Giving /media/data/programmer/project/,
# return path as python/tutotial/file/test.py
return fullpath[len(prefix) + 1 :] mainLogic()

【Python3】操作文件,目录和路径的更多相关文章

  1. python学习笔记:模块——os模块(操作文件/目录)

    import os os.rename(old,new) #重命名文件或目录 os.remove(f)#删除文件 os.mkdir('china/beijing') #创建文件夹 os.makedir ...

  2. 吴裕雄--天生自然python学习笔记:Python3 OS 文件/目录方法

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...

  3. Python3 OS 文件/目录方法

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...

  4. python020 Python3 OS 文件/目录方法

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...

  5. C#路径/文件/目录/I/O常见操作汇总

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  6. C#路径/文件/目录/I/O常见操作汇总<转载>

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  7. 【转】C#路径/文件/目录/I/O常见操作汇总

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  8. C#路径,文件,目录,I/O常见操作

         C#路径,文件,目录,I/O常见操作 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供 ...

  9. Python - os 文件/目录操作

    最近经常用到 os 操作文件/目录,感觉挺好使的,但是一直没有系统的梳理学习一下, 今天想借此机会整理一下工作中常用的方法,也算自己总结学习的一个积累吧. 直接上代码,注释明了 #-*-coding: ...

  10. 使用File类、StreamRead和StreamWrite读写数据、以及Path类操作文件路径和Directory

    1.File类的概念: File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量 ...

随机推荐

  1. 粗看ES6之函数

    标签: es6 javascript 箭头函数 ES6为了书写方便引入了函数的全新简写方式-箭头函数 <!DOCTYPE html> <html> <head> & ...

  2. Android无需权限显示悬浮窗

    TYPE_TOAST一直都可以显示, 但是用TYPE_TOAST显示出来的在2.3上无法接收点击事件, 因此还是无法随意使用. 下面是我之前研究后台线程显示对话框的时候记得笔记, 大家可以看看我们项目 ...

  3. Static 用法

    1.Static关键字含意:static译文是静态的,静止的,因此使用 static 修饰符声明属于类型本身而不是属于特定对象(new创建的对象)的静态成员. 2.修饰使用范围 static 修饰符可 ...

  4. Java1.7新特性

    1.switch语句支持字符串变量 public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) { String typeOf ...

  5. Java问题定位之Java线程堆栈分析

    采用Java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子.系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统宕掉),如何速度命中问题的根本原因 ...

  6. SQL查询某一字段重复的数据

    查询出重复记录 select * from 数据表 WHERE 重复记录字段 in ( select 重复记录字段 from  数据表 group by 重复记录字段 having count(重复记 ...

  7. 【2017-06-20】Linux应用开发工程师C/C++面试问题记录之一:Linux多线程程序的同步问题

    参考之一:Linux 线程同步的三种方法 链接地址:http://www.cnblogs.com/eleclsc/p/5838790.html 简要回答: Linux下线程同步最常用的三种方法就是互斥 ...

  8. bzoj4836 [Lydsy2017年4月月赛]二元运算

    Description 定义二元运算 opt 满足 现在给定一个长为 n 的数列 a 和一个长为 m 的数列 b ,接下来有 q 次询问.每次询问给定一个数字 c  你需要求出有多少对 (i, j) ...

  9. 5.2 Array类型

    ◆  创建数组的基本方式有两种. ①第一种是使用Array构造函数,new关键字可省略 var colors = new Array(); var colors = new Array(20); // ...

  10. Django Reverse for 'artic_post' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

    Reverse for 'home' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] ...