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

2023-05-16

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

转载于:https://www.cnblogs.com/moiyer/archive/2010/03/27/1952694.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 3 教程二:文件,目录和路径 的相关文章

  • Linux通过ssh传输文件

    一 scp是什么 scp是secure copy的简写 xff0c scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令 用于在Linux下进行远程拷贝文件的命令 xff0c 和它类似的命令有cp xff0c 不过cp只是在本机
  • 认识CoreData-基础使用

    第一篇文章中并没有讲CoreData的具体用法 xff0c 只是对CoreData做了一个详细的介绍 xff0c 算是一个开始和总结吧 这篇文章中会主要讲CoreData的基础使用 xff0c 以及在使用中需要注意的一些细节 因为文章中会插
  • 如何在Debian Linux上安装配置ISC DHCP服务器

    动态主机控制协议 DHCP 给网络管理员提供了一种便捷的方式 xff0c 为不断变化的网络主机或是动态网络提供网络层地址 xff0c 其中最常用的 DHCP 服务工具是 ISC DHCP Server DHCP 服务的目的是给主机提供必要的
  • SQL学习笔记1

    以下内容是我在学习SQL xff08 http www w3school com cn sql index asp xff09 的时候的学习笔记 学习时使用的数据库软件是MySQL 数据库可视化工具 SQLyogEnt 如果大家有发现什么不
  • BAT-使用BAT方法结束进程(删除进程)

    64 echo off taskkill f im GAM exe taskkill f im GCL10 exe
  • 解决访问apache中文乱码的问题

    解决访问 apache 中文乱码的问题 修改 apache 的配置文件 Vi etc httpd conf httpd conf 在 AddDefaultCharset UTF 8 下面添加 AddDefaultCharset UTF 8
  • linux远程灰屏,Ubuntu 15.10安装VNC灰屏问题解决

    1 在Ubuntu上首先需要安装vnc4server apt get install vnc4server 2 第一次执行vncserver的时候需要为客户端连接设置8位的密码 3 打开服务后 xff0c 根据客户端号连接 也可以指定客户端
  • Android IOS WebRTC 音视频开发总结(十五)-- 培训课程大纲

    Android IOS WebRTC 音视频开发总结 xff08 十五 xff09 培训课程大纲 最近在给公司做内部培训 xff0c 主要是关于即时通讯和移动视频通话 xff0c 包括android与android xff0c ios与io
  • Docker 1.12 : 使用 Swarm 的新姿势

    本文首发于我的博客 原文链接 xff1a Docker 1 12 新特性 Docker1 12 版本做出了很大的改动 xff0c 特别是增加了对 swarm 的原生支持 xff0c 下面对新版的使用做一个总结 xff0c 供大家查阅 doc
  • 用CSS写一个简单的幻灯片效果页面

    这里是修真院前端小课堂 xff0c 每篇分享文从 背景介绍 知识剖析 常见问题 解决方案 编码实战 扩展思考 更多讨论 参考文献 八个方面深度解析前端知识 技能 xff0c 本篇分享的是 xff1a 用CSS写一个简单的幻灯片效果页面 1
  • Go程序Windows运行时不显示cmd窗口

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 非常简单 xff0c 编译时候加参数 go build ldflags 61 34 H windowsgui 34 转载于 https my oschina net pok
  • Python3 创建虚拟环境

    目的 使用虚拟环境是为了隔离不同项目之间的Python库 创建虚拟环境 Python3 内置了venv模块 xff0c 首先创建项目目录 xff0c 进入目录后 xff0c 执行 python3 m venv venv 激活虚拟环境 在开始
  • Ubuntu18.04LTS 文件系统简记

    Ubuntu18 04LTS 文件系统 了解Linux文件系统是熟悉掌握使用Linux系统的第一步 首先安装名为tree的工具 sudo apt install tree 运行 tree help 查看tree命令的详细用法 运行 tree
  • windows下nvm安装node之后npm命令找不到问题解决办法

    主要关键解解决办法 xff1a 61 61 61 适 用于所有东西的安装 安装有关环境配置类的软件及其他 xff0c 一般情况下切记不要安装到c盘programfiles下 xff0c 否则会出现各种问题的报错 xff01 xff01 xf
  • [问题2014S14] 复旦高等代数II(13级)每周一题(第十四教学周)

    问题2014S14 设 V 为酉空间 证明 不存在 V 上的非零线性变换 varphi 使得对 V 中任一向量 v 均有 varphi v v 61 0 注 本题是复旦高代教材 P326 习题 9 1 5 的推广
  • 8B10B编解码及FPGA实现

    概述 在使用ALTERA的高速串行接口时 xff0c GXB模块里硬件实现了8B10B编码 xff0c 用户只是 傻瓜 式的使用 xff0c 笔者也一直没有弄清楚 网上搜索了一些学习资料 xff0c 结合参考文献希望能够对其进行消化 另外
  • 零碎记录- spring security oauth2 资源服务器中设置放行路径

    在资源服务器配置类中重写configure方法 xff0c 添加放行信息 使用了 64 EnableResouceServer xff0c 且继承了ResourceServerConfigurerAdapter的类作为资源服务器配置信息类
  • Golang 新手可能会踩的 50 个坑

    译文 xff1a Golang 新手可能会踩的 50 个坑 原文 xff1a 50 Shades of Go Traps Gotchas and Common Mistakes 翻译已获作者授权 xff0c 转载请注明来源 不久前发现在知乎
  • 手把手教你使用TF服务将TensorFlow模型部署到生产环境 ...

    介 绍 将机器学习 xff08 ML xff09 模型应用于生产环境已成为一个火热的的话题 许多框架提供了旨在解决此问题的不同解决方案 为解决这一问题 xff0c 谷歌发布了TensorFlow xff08 TF xff09 服务 xff0
  • Centos/Linux下如何查看网关地址/Gateway地址

    Centos Linux下如何查看网关地址 Gateway地址 xff1f Linux下查看网关的命令还是很多的 xff0c 不过如果IP是DHCP获取 xff0c 那么有些命令是不适用的 xff0c 当然也有通用的查询网关命令 1 ifc

随机推荐

  • 教你Java生成文件时怎么设置编码格式

    OutputStreamWriter允许用户指定编码方式 xff0c 代码为 xff1a FileInputStream fis 61 new FileInputStream 34 文件路径 34 xff1b OutputStreamWri
  • One input and More output use 'tee'

    2008 05 22 In preparation for my Luma media player I wanted to create a simple audio player with visualization Based upo
  • 简单的任务调度(自整理)

    为什么80 的码农都做不了架构师 xff1f gt gt gt 任务调度 使用 Quartz 框架实现 1 8 6 的版本 开源框架 什么是任务调度 xff1a 即是某个时间点做某件时间 xff01 核心有是什么 xff1a 以时间为关注点
  • Laravel5.5集成七牛云上传、管理(删除、查询)

    一 为什么使用七牛云存储 1 使用七牛带宽和CDN xff0c 速度快 xff0c 不占用开发者服务器 2 支持图片任意格式 任意分辨率自动生成 xff0c 可以用来做图片服务器 3 小流量免费 xff1a 存储空间 10GB xff0c
  • centos为用户添加sudo功能

    su chmod a 43 w etc sudoers vim etc sudoers 找到root ALL 61 ALL ALL这行 复制出新的一行 xff0c 并且将root改为daniel xff08 当前用户名 xff09 chmo
  • Reverse Linked List

    本题是反转一个单链表 xff0c 题目提示使用迭代和递归两种方式 xff0c 属于比较基础的题目 一 迭代方式 xff1a 总体思路是从左到右遍历链表结点 xff0c 依次反转连接关系 每次处理相邻的两个结点 xff0c 从 lt None
  • angularJS1笔记-(17)-ng-bind-html指令

    angular不推荐大家在绑定数据的时候绑定html 但是如果你非要这么干也并不是不可以的 举个例子 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt me
  • 旧电脑diy文件服务器,2021旧电脑自制NAS存储变废为宝.docx

    amp tid 61 13992 amp page 61 1 amp extra 61 pid15059 amp tid 61 13992 amp page 61 1 amp extra 61 pid15059 旧电脑自制NAS存储变废为宝
  • Druid 连接池 JDBCUtils 工具类的使用

    Druid工具介绍 它不仅仅是一个数据库连接池 xff0c 它还包含一个ProxyDriver xff0c 一系列内置的JDBC组件库 xff0c 一个SQL Parser 支持所有JDBC兼容的数据库 xff0c 包括Oracle MyS
  • matlab练习程序(简单图像融合)

    通过本篇和上一篇的结合 xff0c 应该就能做出拉普拉斯图像融合了 这里用的方法很简单 xff0c 就是用模板和两个图像相乘 xff0c 然后对处理后的两个图像再相加就可以了 拉普拉斯融合就是对金字塔的每一层图像做这样的操作 xff0c 然
  • Ext.grid.Panel表格分页

    Ext grid Panel表格分页示例 代码 xff1a cshtml 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt title gt Ext grid Pan
  • Build a Multiple Choices Cascader by ant-design-vue

    Preface I need to make a cascader which can support multiple choices However I didn 39 t find any ui which supports that
  • SpringBoot使用LibreOffice转换PDF

    用LibreOffice将Office文档转换PDF 本例使用 LibreOffice 6 0 4 jodconverter 4 2 0 spring boot 1 5 9 RELEASE 在CentOS7 43 openJDK8 和 Wi
  • 史上最全面的Neo4j使用指南

    Neo4j图形数据库教程 Neo4j图形数据库教程 第一章 xff1a 介绍 Neo4j是什么Neo4j的特点Neo4j的优点 第二章 xff1a 安装 1 环境2 下载3 开启远程访问4 测试 第三章 xff1a CQL 1 CQL简介2
  • 5-ipv6基础知识之-域名解析dns

    DNS域名解析过程比较简单 xff0c 先看下IPV4下面的DNS xff0c 然后再看IPV6下面的DNS 1 IPv4 DNS 1 1 IPv4 DNS请求过程 在电脑上面ping www taobao com xff08 如果已经访问
  • sql中set命令解析

    1 SET ANSI DEFAULTS ON OFF 将一组与 SQL Server 的运行环境有关的选项设置为 SQL 92 标准 2 SET ANSI NULL DFLT OFF ON OFF 当数据库选项 ANSI null defa
  • 软件项目开发,交付文档(全)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 作为一个软件项目负责人 xff0c 这些文档的编写是必须懂的 这里列出软件项目开发 xff0c 交付时文档的文档供大家参考 模板的话需要一个个文档去研究 xff0c 以后做
  • 修改Docker容器字符编码为-zh_CN.UTF-8中文字符集

    版本记录 2019 4 26日 第一版 问题描述 公司的java项目中使用了openoffice和pdf2html对文件进行格式转换 xff0c word xff0c ppt xff0c pdf文件都转换没有问题 xff0c 唯独excel
  • @GetMapping和@PostMapping接收参数的格式

    一 1 使用 64 Controller 注解 xff0c 在对应的方法上 xff0c 视图解析器可以解析return 的jsp html页面 xff0c 并且跳转到相应页面 若返回json等内容到页面 xff0c 则需要加 64 Resp
  • Python 3 教程二:文件,目录和路径

    1 遍历文件夹和文件 import os import os path os os path里包含大多数文件访问的函数 所以要先引入它们 请按照你的实际情况修改这个路径 rootdir 61 34 d download 34 for par