【Python3】操作文件,目录和路径
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】操作文件,目录和路径的更多相关文章
- python学习笔记:模块——os模块(操作文件/目录)
import os os.rename(old,new) #重命名文件或目录 os.remove(f)#删除文件 os.mkdir('china/beijing') #创建文件夹 os.makedir ...
- 吴裕雄--天生自然python学习笔记:Python3 OS 文件/目录方法
os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...
- Python3 OS 文件/目录方法
os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...
- python020 Python3 OS 文件/目录方法
os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...
- C#路径/文件/目录/I/O常见操作汇总
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- C#路径/文件/目录/I/O常见操作汇总<转载>
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- 【转】C#路径/文件/目录/I/O常见操作汇总
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- C#路径,文件,目录,I/O常见操作
C#路径,文件,目录,I/O常见操作 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供 ...
- Python - os 文件/目录操作
最近经常用到 os 操作文件/目录,感觉挺好使的,但是一直没有系统的梳理学习一下, 今天想借此机会整理一下工作中常用的方法,也算自己总结学习的一个积累吧. 直接上代码,注释明了 #-*-coding: ...
- 使用File类、StreamRead和StreamWrite读写数据、以及Path类操作文件路径和Directory
1.File类的概念: File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量 ...
随机推荐
- Memcache安装、配置与学习
基于现在大多网站数据很多,由于页面性能问题我们都开始对站点使用缓存进行性能优化 Memcache扩展下载:http://windows.php.net/downloads/pecl/releases/ ...
- C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序
本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册 ...
- 简单二级导航JQ事件代码
$(function()){ $("li").hover(function(){ $(this).children("dl").show() },functio ...
- Yesterday is history, tomorrow is a mystery, but today is a gift.
Yesterday is history, tomorrow is a mystery, but today is a gift.昨天已成历史,明天太过神秘,而今天是一份礼物.
- [SVN]TortoiseSVN工具培训1─为什么要用SVN?
你是否有经历过以下情况: SVN的使用理由/好处:
- 利用jQuery做登录界面的验证码
主要是为了有效防止机器恶意注册,对某一个特定已注册用户用特定程序暴力破解方式进行不断的登陆尝试.验证码是现在很多网站注册/登录时必填的, 虽然对用户可能有点麻烦,但是对网站/社区来说这个功能还是很有必 ...
- Windows下hosts文件的作用
原文地址:https://my.oschina.net/u/874225/blog/194348 在操作系统中的路径:Win7在C:\Windows\System32\drivers\etc目录下 内 ...
- PS:将一个图片变成圆形
1.选择一张正方形图片并放置到PS软件中 2.选择“选框工具”->右击选择"椭圆选框工具” 3.画出你要圆形内的范围: 4.选择两种方式中的一种,实际上效果是一毛一样的 5.右下角就会 ...
- OpenGL学习 Introduction
OpenGL and Graphics Pipeline The word pipeline is from production lines in factories.Generating a pr ...
- 关于SAP UI5数据绑定我的一些原创内容
如何查找SAP UI5官方关于数据绑定的文档: https://sapui5.hana.ondemand.com/ 点Documentation: Filter里输入data就能看到Data Bind ...