`
jiangduxi
  • 浏览: 458754 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Python3操作文件,目录和路径

阅读更多
1.遍历文件夹和文件

 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.复制文件

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.分割路径和文件名

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)


文件备份程序



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


分享到:
评论

相关推荐

    python对操作系统的目录和文件操作

    在Python中进行文件和目录的操作是非常常见的需求,尤其在处理自动化脚本、文件管理或系统维护等场景时。Python内置的`os`模块提供了丰富的工具集来帮助开发者轻松地完成这些任务。本文将详细介绍如何使用Python中的...

    python文件操作实验报告.doc

    在Python中,文件操作的正确性和安全性非常重要,应始终确保处理完文件后及时关闭,防止资源泄露。另外,进行文件操作时,要注意文件权限和路径的正确性,避免出现无法读写的情况。对于复杂的数据操作,可以利用...

    Python文件操作(课件)

    当涉及到文件夹操作时,Python的`os`和`os.path`模块提供了遍历目录和操作文件夹的功能。递归访问文件夹可以使用递归函数或栈来实现。 对于Excel文件的读写,Python有多个库支持,如pandas的`read_excel()`和`to_...

    python提取pdf文件目录.zip

    PyPDF2 是一个用于操作PDF文件的纯Python库,它可以读取PDF文件的内容,包括元数据、页面、文本、书签、加密、分割和合并PDF等。对于提取PDF文件的目录,PyPDF2提供了`PdfFileReader`类,通过这个类我们可以获取到...

    Python提取pdf文件目录_Demo源码

    这个Demo的执行流程大致是这样的:通过命令行指定PDF文件路径和输出格式(JSON或文本),然后运行`bookmark.py`脚本,它会读取PDF,提取书签,将其转换为JSON格式,并根据用户选择的输出方式写入文件。 Python的...

    Python实现多级目录压缩与解压文件的方法

    同时,它支持中文路径,这是通过在字符串操作前使用`decode('utf-8')`来实现的,以确保在不同编码环境下正确处理文件路径。 总结一下,Python中实现多级目录的压缩与解压主要依赖`zipfile`库的`ZipFile`类以及`os`...

    一文讲清Python PyQt5的控件如何实现拖放获取文件路径(markdown)

    本篇文章将详细讲解如何使用PyQt5的控件,特别是QLineEdit,来实现拖放操作以获取文件路径。我们将深入理解相关代码,并了解如何将这一功能整合到你的项目中。 首先,让我们了解一下QLineEdit。QLineEdit是PyQt5中...

    Python之操作文件和目录共5页.pdf.zip

    以上是Python操作文件和目录的基础知识。了解并熟练掌握这些内容,能帮助开发者高效地进行文件管理和数据处理。在实际项目中,根据具体需求,可能还需要了解更高级的特性,如文件锁定、异步I/O等。在Python的世界里...

    python实现读取文件目录并存储到lst文件中

    功能: 1.判断文件所在的文件夹是否存在,不存在则创建该文件夹; 2.读取文件夹下的所有文件,可以控制是否返回文件的...3.将所有文件的目录存储到指定的lst文件中; 4.读取lst文件中的路径,即将路径加载到列表中。

    基于python的最优路径规划.zip_python 路径_python最优路径_python路径规划_最优路径 python_

    在压缩包内的"基于python的最优路径规划"文件中,可能包含了实现这些步骤的Python代码,可能使用了如`networkx`库来构建和操作图,以及自定义的类和函数来处理蚂蚁的移动和信息素更新。通过对这个代码的深入学习,...

    python获取当前目录路径和上级路径的实例

    在Python编程中,处理文件路径是常见的任务之一,经常需要获取当前工作目录和上级目录路径。在上述文档中,通过实例演示了如何使用Python的os模块来完成这些任务。接下来,我们将详细讲解这些知识点。 首先,我们来...

    用python在日志中查找文件路径并删除文件

    本篇文章将深入探讨如何使用Python从日志文件(如`log.txt`)中查找特定文件路径,并根据找到的路径执行删除操作。首先,我们需要理解日志文件的结构,通常它包含时间戳、信息级别、消息内容等。在我们的场景中,...

    Python文件操作最全笔记.pdf

    - **os模块**:Python内置模块,用于操作系统相关的功能,如文件和目录操作。在使用前需要通过`import os`导入。 - **递归实现文件检索**:通过`os.listdir()`获取目录中的文件和子目录,然后使用递归调用来遍历...

    python 文件简单操作

    Python 文件简单操作 Python 中对文件、文件夹的操作需要涉及到 os 模块和 shutil 模块。下面将详细介绍 Python 中文件简单操作的知识点。...了解这些模块的函数和方法可以帮助我们更好地操作文件和目录。

    精品课件 Python从入门到精通 第13章 文件及目录操作(共26页).ppt

    在Python编程中,文件和目录操作是至关重要的部分,它们允许程序员进行数据的持久化存储以及组织项目结构。第13章"文件及目录操作"深入讲解了如何在Python中进行这些操作,以下是对相关知识点的详细说明: 1. **...

    python 文件操作函数

    在Python编程语言中,文件操作是一项基础且重要的功能,它涉及到对文件的读取、写入、修改以及删除等操作。Python提供了丰富的内置函数来处理文件,这些函数可以帮助程序员高效地进行文件管理。下面,我们将深入探讨...

    关于python文件操作

    Python中的文件操作是编程中非常基础且重要的部分,它涵盖了对文件和目录的各种操作,包括创建、读取、写入、删除以及管理文件属性等。Python内置了丰富的库支持文件操作,如`os`和`shutil`模块,使得文件处理变得...

    Python实现目录文件扫描工具源码

    `os`模块提供了许多与操作系统交互的函数,而`os.path`则包含了处理文件和目录路径的实用方法。在这个项目中,我们将用到`os.walk()`函数,它能够以三元组(目录路径,当前目录下的子目录列表,当前目录下的文件名列...

    Python处理中文路径

    除了处理路径,我们还需要了解Python中读写文件的基本操作: 1. 打开文件: ```python f = open("d:\test.txt", "w") ``` 其中,`"w"`表示写入模式,如果文件存在则清空,不存在则创建。 2. 读取文件内容: -...

    Python实现读取Properties配置文件的方法

    当然,如果你的项目依赖较多的配置文件操作,可能需要考虑使用更高级的库,如`configparser`(Python 3)或`ConfigObj`,它们提供了更多的特性和错误处理机制。不过,对于基本的需求,上述自定义的`Properties`类...

Global site tag (gtag.js) - Google Analytics