- 浏览: 317138 次
文章分类
最新评论
-
ZT71363387:
多谢,帮我解决了抄送人收不到邮件的问题
python smtplib -
dsjt:
pythonw.exe 运行后无反应。版本不匹配啊。
python+PyQT+Eric安装配置 -
dsjt:
xp 32位系统安装eric后,目录下没有 .bat文件是怎么 ...
python+PyQT+Eric安装配置
Python 3 教程二:文件,目录和路径
1 遍历文件夹和文件
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->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".
'''
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 分割路径和文件名
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->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 分隔文件和扩展名
'''
# 常用函数有三种:分隔路径,找出文件名.找出盘符(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 复制文件
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->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:如何复制目录树
'''
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 实战:文件备份小程序
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->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()
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
转:http://www.cnitblog.com/yunshichen/archive/2009/04/01/55931.html
发表评论
-
lxml.etree
2017-06-21 10:48 618http://www.cnblogs.com/bluesc ... -
Python dictdiffer模块比较两个字典
2017-03-04 17:51 3554http://dictdiffer.readthedocs. ... -
python 判断一个对象是否可迭代
2017-01-23 09:44 651如何判断一个对象是可迭代对象呢?方法是通过collectio ... -
给python交互式命令行增加自动补全和命令历史
2017-01-22 10:09 683在用户目录下新建".pythonstartup& ... -
python 字典格式化
2017-01-16 13:57 408import pprint data = {'a': ... -
python最简洁的条件判断语句写法
2017-01-11 20:11 1168这篇文章主要介绍了Python返回真假值(True or ... -
python 格式化json
2016-12-19 20:07 564#!/usr/bin/env python # -*- ... -
python下载文件的三种方法
2016-11-18 10:21 402Python开发中时长遇到要下载文件的情况,最常用的方法就是 ... -
python 格式化字典字符串
2016-11-13 15:27 346version = {'a': 1, 'b': 2, 'c' ... -
python __fatal退出函数
2016-11-13 14:41 634def __fatal(exitcode, message) ... -
Python logging
2016-09-18 18:13 491#!/usr/bin/env python # -*- ... -
思考:如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:
2016-06-24 18:30 2045>>> L = ['Hello', 'Wor ... -
去除重复字符串并保持原来顺序输出
2016-06-23 17:53 1199#!/usr/bin/env python # -*- c ... -
Python getpass 输入密码
2016-03-28 20:35 623Python有个自带的getpass模块: impor ... -
优秀Python学习资源收集汇总(强烈推荐)
2016-02-29 15:15 699Python是一种面向对象、直译式计算机程序设计语言。它的 ... -
python 模拟登录iteye博客
2016-01-07 11:32 638#!/usr/bin/python # -*- codi ... -
Python之路【目录】
2016-01-02 00:41 636http://www.cnblogs.com/wupeiq ... -
Python 正则 提取由start开始到end结束的行
2015-12-16 13:51 695import re s=open(r"bug.t ... -
Python文件替代fileinput模块
2015-12-12 12:05 1386Python文件替代fileinput模块 一,文件替代: ... -
linecache,想读某行周围的哪行都可以
2015-12-12 12:04 710import linecache x=linecache ...
相关推荐
### Python爬虫入门教程知识点详解 #### 一、理解网页结构 在进行Python爬虫开发之前,首先要了解网页的基本构成。网页通常包含三个主要部分:HTML(超文本标记语言)、CSS(层叠样式表)以及JavaScript(一种常用...
这本书以简洁明了的语言和丰富的实例,为读者提供了全面而深入的Python3学习路径,旨在帮助新手快速掌握这门强大的编程语言。 1. **Python3基础**:教程从Python3的基础语法入手,包括变量、数据类型(如整型、浮点...
总的来说,这个教程资源集合为初学者和有经验的开发者提供了全面的学习路径,无论你是想学习Python3,还是探索其他IT领域的知识,都能在这个资源库中找到相应的指导。通过深入学习和实践,你将能够掌握这些技术,...
- 包括文件和目录的操作。 #### 15. **更多Python的内容** - **特殊的方法**: - Python中的特殊方法(如`__str__`、`__len__`等)。 - 用于定义对象的行为。 - **单语句块**: - 当一个语句块只有一条语句时...
根据提供的标题“Python基础教程(第二版)带目录”以及描述“Python经典教程,带目录哦”,我们可以推测这是一本关于Python编程语言的基础教程书籍。虽然提供的部分内容并未包含实际的文字内容,但从标题和描述中...
当我们试图加载一个模块时,Python 会在指定的路径下搜索对应的.py 文件,如果找不到,就会报错。我们可以使用 import 语句来加载模块,例如:import numpy。 知识点总结: 1. pip 是 Python 的包管理工具,可以...
- **文件读取**:演示如何打开并读取文件内容,包括文本文件和二进制文件。 #### Python第32课:写文件 - **文件写入**:介绍如何将数据写入文件,包括覆盖写入和追加写入。 #### Python第33课:处理文件中的数据...
根据提供的文件信息,我们可以归纳出一系列重要的Python编程知识点,这些知识点不仅覆盖了Python的基本操作,还包括了一些高级主题。下面是对这些知识点的详细说明: ### 一、Python的安装与环境配置 - **安装...
内容包括: 文件写入:使用"w"模式打开文件并写入内容。...错误处理:演示如何在文件操作中进行异常处理,避免路径或权限问题导致程序中断。 文件删除:使用os.remove()删除文件。删除前先检查文件是否存在,避免误删。
在Python的GUI编程中,PyQt5是一个非常强大的库,它提供了丰富的控件和功能,使得用户界面的设计变得简单易行。本篇文章将详细讲解如何使用PyQt5...希望这个教程能帮助你在Python GUI编程中实现更多创新和实用的功能。
8. **文件操作**:学习读写文件、处理文件路径、文件对象的使用,是每个程序员必备的技能,教程会详细讲解Python中的文件操作方法。 9. **标准库和第三方库**:Python拥有丰富的标准库和第三方库,教程会介绍一些...
**Python 爬虫入门教程概述** Python 爬虫是一种用于自动提取网页信息的程序,对于数据分析和信息收集有着重要的作用。这篇教程是为初学者设计的,旨在引导读者在30分钟内掌握基本的Python爬虫编写技巧。教程分为五...
在大多数Linux和Unix系统中,Python解释器被安装在`/usr/bin`目录下,文件名为`python`。当你在终端中运行带有这种shebang的脚本时(例如,通过`./myscript.py`),系统会知道应该调用`/usr/bin/python`来执行脚本。...
7. **文件操作**:学习如何打开、读取、写入和关闭文件,掌握文本文件和二进制文件的区别。 8. **标准库与第三方库**:Python拥有丰富的标准库,如datetime用于日期和时间处理,random用于随机数生成。同时,了解...
### 官方Python3教程知识点总结 #### 一、Python3简介 **1.1 Python3的特点** - **高效的数据结构:** Python3内置了一系列高效的数据结构,如列表(list)、字典(dict)等,方便数据处理。 - **面向对象编程:** ...
这种形式直接指定了Python解释器的路径,即在`/usr/bin`目录下找寻Python解释器。当你在Linux或Unix环境下,加上执行权限(如`chmod +x script.py`)后,可以通过`./script.py`来运行脚本。这种方式适用于Python...
4. **中文字符输出乱码**:在Python3中,需要正确设置文件编码以避免中文字符乱码问题,通常通过设置文件打开模式(如`'rb'`或`'wb'`)和编码方式(如`'utf-8'`)来解决。 5. **Python运行错误详解**:讲解Python...
7. **文件操作**:介绍如何读写文件,包括文本文件和二进制文件,以及文件对象的常用方法。 8. **标准库和内置函数**:详细解析Python的内置函数和常用标准库,如os、sys、math等,扩大读者的编程视野。 9. **正则...
《Python基础教程第3版》是一本广受欢迎的Python编程入门书籍,其源代码提供了丰富的实例和练习,帮助读者深入理解和掌握Python编程语言。这个压缩包包含23个章节的完整源码,覆盖了Python的基础到进阶内容,是学习...
- **在线课程**:网上有许多优秀的Python教程和课程,如Coursera、edX上的课程等。 - **书籍**:除了在线资源外,还可以参考一些经典书籍,如《Python基础教程》、《流畅的Python》等。 - **社区和论坛**:加入...