【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类方法的参量 ...
随机推荐
- C#操作Excel报错:服务器出现意外情况。
C#操作Excel表格时,如遇以下错误: 服务器出现意外情况.(异常来自 HRESULT:0x80010105(RPC_E_SERVERFAULT)) 解决方案: 打开你电脑中的Office-Exce ...
- 谈谈Quartz中遇到的深坑
最近在项目开发的时候,根据业务需求,需要配置为自定义Quartz任务(即:用户可以自定义任务执行时间) 但是在即将写完的时候遇到一个非常头疼的问题: 一个redisTemplate 与 workOrd ...
- Windows和Linux执行Java代码的不同方式
一.Windows 下编译并执行 Java 字节码文件(类文件) 1.编译 Hello.java 源码文件: java -d . Hello.java 2.执行 Hello.class 字节码文件: ...
- django orm 时间字段讲解
创建django的model时,有DateTimeField.DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime().date().time()三中对象 ...
- Properties的使用以及配置文件值的获取
一.项目的部署如下,现在要获取SystemGlobals.properties中的值 二.代码如下: package com.util; import java.io.IOException; imp ...
- 【转】run方法与start方法的区别
在java线程中 start与run的不同start与run方法的主要区别在于当程序调用start方法一个新线程将会被创建,并且在run方法中的代码将会在新线程上运行,然而在你直接调用run方法的时候 ...
- 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里
我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate ...
- soap使用xml调用webapi后返回xml信息进行JSON转换处理,以顺丰查询接口为例
expressUrl = string.Format(可以卸载配置文件的域名URL + "/bsp-oisp/ws/expressService"); StringBuilder ...
- vuejs中v-if的深层用法v-else,v-else-if,key
<div id='root'> <div v-if='show'>helle world</div> <button @click='handleClick' ...
- ssd论文解读
https://www.sohu.com/a/168738025_717210 https://www.cnblogs.com/lillylin/p/6207292.html https://blog ...