Python:文件操作技巧(File operation)

读写文件

#
! /usr/bin/python

#
 -*- coding: utf8 -*-

spath
=
"
D:/download/baa.txt
"

f
=
open(spath,
"
w
"
) 
#
 Opens file for writing.Creates this file doesn't exist.

f.write(
"
First line 1.\n
"
)
f.writelines(
"
First line 2.
"
)

f.close()

f
=
open(spath,
"
r
"
) 
#
 Opens file for reading

for
 line 
in
 f:
    
print
(
"
每一行的数据是:%s
"
%
line)

f.close()

'''

知识点: 如何读写文件
'''



遍历文件夹和文件



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
#
常用函数有三种:分隔路径,找出文件名.找出盘符(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)


复制文件

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)


实战:文件备份小程序

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
+

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[
-

]
==
""
:
        tmp
=
l[
-

]
    
else
:
        tmp
=
l[
-

]
    
return
 fullpath[0:len(fullpath)
-
len(tmp)
-

]

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

:]

mainLogic()



资源参考:

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

Python:文件操作技巧(File operation)(转)的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  4. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  5. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  6. Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  7. 第十二章 Python文件操作【转】

    12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...

  8. 第九章 Python文件操作

    前一阵子写类相关的内容,把老猿写得心都累了,本来准备继续介绍一些类相关的知识的,如闭包.装饰器.描述符.枚举类.异常等,现在实在不想继续,以后再开章节吧.本章弄点开胃的小菜提提神,介绍Python中文 ...

  9. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

随机推荐

  1. 安装elasticsearch-1.7.1及中文IK和近义词配置

    安装elasticsearch及中文IK和近义词配置 https://www.cnblogs.com/yjf512/p/4789239.html 安装elasticsearch及中文IK和近义词配置 ...

  2. BZOJ4481 JSOI2015非诚勿扰(概率期望+树状数组)

    首先求出每个女性接受某个男性的概率.这个概率显然是一个无穷等比数列求和. 然后按编号从小到大考虑每个女性,维护出每个男性被选择的期望次数,BIT上查询后缀和即可. 需要long double. #in ...

  3. ext大法好啊

    http://www.cnblogs.com/keshuqi/p/6257895.html

  4. BZOJ 3262: 陌上花开 CDQ

    这个题大部分人用了离散然后水之,然而.....作为一只蒟蒻我并没有想到离散,而是直接拿两个区间一个对应n,一个对应k来搞,当然这两个区间是对应的,我把第一维排序,第二维CDQ,第三维树状数组,然而由于 ...

  5. MFC随机数

    void CMFCDemoDlg::OnClickedGetrand() { wchar_t str[]; //srand((unsigned)time(NULL)); int num = rand( ...

  6. python3创建目录

    感觉python3最好用的创建目录函数是os.makedirs,它可以设置在多级目录不存在时自动创建,已经存在也不抛出异常. import os os.makedirs('hello/hello1/h ...

  7. bzoj 2525 [Poi2011]Dynamite 二分+树形dp

    [Poi2011]Dynamite Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 270  Solved: 138[Submit][Status][D ...

  8. HTML5 视频直播

    目前视频直播,尤其是移动端的视频直播已经火到不行了,基本上各大互联网公司都有了自己的直播产品,所以对于直播的一些基本知识和主要技术点也要有所了解,本次分享就向大家介绍一下其中的奥秘. 内容大体框架:  ...

  9. Windows下安装Mycat

    Mycat 首先在安装Mycat之前,需要安装JDK1.7以上,可以在cmd环境下输入 java -version 查看本地安装的java版本 如果未安装或者版本在1.7以下,请重新安装. 安装JDK ...

  10. 完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码

    <script  type="text/javascript"> //设为首页 function SetHome(obj,url){     try{         ...