`
天梯梦
  • 浏览: 13731717 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Python 3 教程二:文件,目录和路径

阅读更多

1 遍历文件夹和文件

import  os
import  os.path
#  os,os.path里包含大多数文件访问的函数,所以要先引入它们.
#
 请按照你的实际情况修改这个路径
rootdir  =   " d:/download "
for  parent, dirnames, filenames  in  os.walk(rootdir):
    
# case 1:
     for  dirname  in  dirnames:
        
print  ( " parent is: "   +  parent)
        
print  ( " dirname is: "   +  dirname)
    
# case 2
     for  filename  in  filenames:
        
print  ( " parent is: "   +  parent)
        
print  ( " filename with full path : "   +  os.path.join(parent, filename))

''' 知识点:

    * os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.
    * case1 演示了如何遍历所有目录.
    * case2 演示了如何遍历所有文件.
    * os.path.join(dirname,filename) : 将形如"/a/b/c"和"d.java"变成/a/b/c/d.java".
'''

 

 

2 分割路径和文件名

 

import  os.path
# 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.
#
根据你机器的实际情况修改下面参数.
spath = " D:/download/repository.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)
'''
    知识点:    这三个函数都返回二元组.
    * case1 分隔目录和文件名
    * case2 分隔盘符和文件名
    * case3 分隔文件和扩展名
'''



总结:5个函数

  • os.walk(spath)
  • os.path.split(spath)
  • os.path.splitdrive(spath)
  • os.path.splitext(spath)
  • os.path.join(path1,path2)

 

3 复制文件

 

import  shutil
import  os
import  os.path

src
= " d:\\download\\test\\myfile1.txt "
dst
= " d:\\download\\test\\myfile2.txt "
dst2
= " d:/download/test/测试文件夹.txt "

dir1
= os.path.dirname(src)

print ( " dir1 %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.copyfile(src, dst)
shutil.copyfile(src, dst2)
f2
= open(dst, " r " )
for  line  in  f2:
    
print (line)

f2.close()

# 测试复制文件夹树
try :
    srcDir
= " d:/download/test "
    dstDir
= " d:/download/test2 "
    
# 如果dstDir已经存在,那么shutil.copytree方法会报错!
     # 这也意味着你不能直接用d:作为目标路径.
    shutil.copytree(srcDir, dstDir)
except  Exception as err:
    
print  (err)
    
'''
    知识点:
    * shutil.copyfile:如何复制文件
    * os.path.exists:如何判断文件夹是否存在
    * shutil.copytree:如何复制目录树    
'''


总结:4个函数

  • os.path.dirname(path)
  • os.path.exists(path)
  • shutil.copyfile(src, dst)
  • shutil.copytree(srcDir, dstDir)

 

 

4 实战:文件备份小程序

 

 

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

 


5 资源:方法详解

你可以在这里看到更多的api解释,感谢该作者: http://www.cnpython.org/docs/200/p_119.html

 

 

分享到:
评论

相关推荐

    Python爬虫入门教程:超级简单的Python爬虫教程.pdf

    ### Python爬虫入门教程知识点详解 #### 一、理解网页结构 在进行Python爬虫开发之前,首先要了解网页的基本构成。网页通常包含三个主要部分:HTML(超文本标记语言)、CSS(层叠样式表)以及JavaScript(一种常用...

    Python3教程-廖雪峰带

    这本书以简洁明了的语言和丰富的实例,为读者提供了全面而深入的Python3学习路径,旨在帮助新手快速掌握这门强大的编程语言。 1. **Python3基础**:教程从Python3的基础语法入手,包括变量、数据类型(如整型、浮点...

    Python3教程菜鸟教程.pdf

    总的来说,这个教程资源集合为初学者和有经验的开发者提供了全面的学习路径,无论你是想学习Python3,还是探索其他IT领域的知识,都能在这个资源库中找到相应的指导。通过深入学习和实践,你将能够掌握这些技术,...

    Python初学教程:《简明Python教程》

    - 包括文件和目录的操作。 #### 15. **更多Python的内容** - **特殊的方法**: - Python中的特殊方法(如`__str__`、`__len__`等)。 - 用于定义对象的行为。 - **单语句块**: - 当一个语句块只有一条语句时...

    python基础教程(第二版) 带目录

    根据提供的标题“Python基础教程(第二版)带目录”以及描述“Python经典教程,带目录哦”,我们可以推测这是一本关于Python编程语言的基础教程书籍。虽然提供的部分内容并未包含实际的文字内容,但从标题和描述中...

    PYTHON学习教程资源:安装第三方模块知识点学习讲解(含代码练习题).docx

    当我们试图加载一个模块时,Python 会在指定的路径下搜索对应的.py 文件,如果找不到,就会报错。我们可以使用 import 语句来加载模块,例如:import numpy。 知识点总结: 1. pip 是 Python 的包管理工具,可以...

    python基础教程至60课(基础)

    - **文件读取**:演示如何打开并读取文件内容,包括文本文件和二进制文件。 #### Python第32课:写文件 - **文件写入**:介绍如何将数据写入文件,包括覆盖写入和追加写入。 #### Python第33课:处理文件中的数据...

    Python_教程(PDF版).pdf

    根据提供的文件信息,我们可以归纳出一系列重要的Python编程知识点,这些知识点不仅覆盖了Python的基本操作,还包括了一些高级主题。下面是对这些知识点的详细说明: ### 一、Python的安装与环境配置 - **安装...

    Python文件操作教程:文本文件的读写、追加、逐行读取与异常处理完整示例

    内容包括: 文件写入:使用"w"模式打开文件并写入内容。...错误处理:演示如何在文件操作中进行异常处理,避免路径或权限问题导致程序中断。 文件删除:使用os.remove()删除文件。删除前先检查文件是否存在,避免误删。

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

    在Python的GUI编程中,PyQt5是一个非常强大的库,它提供了丰富的控件和功能,使得用户界面的设计变得简单易行。本篇文章将详细讲解如何使用PyQt5...希望这个教程能帮助你在Python GUI编程中实现更多创新和实用的功能。

    廖雪峰 2018官方Python3教程(二)_廖雪峰_python_教程二_

    8. **文件操作**:学习读写文件、处理文件路径、文件对象的使用,是每个程序员必备的技能,教程会详细讲解Python中的文件操作方法。 9. **标准库和第三方库**:Python拥有丰富的标准库和第三方库,教程会介绍一些...

    Python爬虫入门教程:超级简单的Python爬虫教程

    **Python 爬虫入门教程概述** Python 爬虫是一种用于自动提取网页信息的程序,对于数据分析和信息收集有着重要的作用。这篇教程是为初学者设计的,旨在引导读者在30分钟内掌握基本的Python爬虫编写技巧。教程分为五...

    python基础教程廖雪峰云-Python基础教程.pdf

    在大多数Linux和Unix系统中,Python解释器被安装在`/usr/bin`目录下,文件名为`python`。当你在终端中运行带有这种shebang的脚本时(例如,通过`./myscript.py`),系统会知道应该调用`/usr/bin/python`来执行脚本。...

    Python基础教程 第二版 高清PDF

    7. **文件操作**:学习如何打开、读取、写入和关闭文件,掌握文本文件和二进制文件的区别。 8. **标准库与第三方库**:Python拥有丰富的标准库,如datetime用于日期和时间处理,random用于随机数生成。同时,了解...

    官方python3教程

    ### 官方Python3教程知识点总结 #### 一、Python3简介 **1.1 Python3的特点** - **高效的数据结构:** Python3内置了一系列高效的数据结构,如列表(list)、字典(dict)等,方便数据处理。 - **面向对象编程:** ...

    python入门教程廖雪峰-Python基础教程.pdf

    这种形式直接指定了Python解释器的路径,即在`/usr/bin`目录下找寻Python解释器。当你在Linux或Unix环境下,加上执行权限(如`chmod +x script.py`)后,可以通过`./script.py`来运行脚本。这种方式适用于Python...

    python入门教程大全.pdf 精心整理

    4. **中文字符输出乱码**:在Python3中,需要正确设置文件编码以避免中文字符乱码问题,通常通过设置文件打开模式(如`'rb'`或`'wb'`)和编码方式(如`'utf-8'`)来解决。 5. **Python运行错误详解**:讲解Python...

    Python入门教程.pdf

    7. **文件操作**:介绍如何读写文件,包括文本文件和二进制文件,以及文件对象的常用方法。 8. **标准库和内置函数**:详细解析Python的内置函数和常用标准库,如os、sys、math等,扩大读者的编程视野。 9. **正则...

    Python基础教程第3版源代码 全部源码包 共23个章节.rar

    《Python基础教程第3版》是一本广受欢迎的Python编程入门书籍,其源代码提供了丰富的实例和练习,帮助读者深入理解和掌握Python编程语言。这个压缩包包含23个章节的完整源码,覆盖了Python的基础到进阶内容,是学习...

    Python3基础教程,书籍

    - **在线课程**:网上有许多优秀的Python教程和课程,如Coursera、edX上的课程等。 - **书籍**:除了在线资源外,还可以参考一些经典书籍,如《Python基础教程》、《流畅的Python》等。 - **社区和论坛**:加入...

Global site tag (gtag.js) - Google Analytics