python文件操作,删除同目录下面txt文件

import os
import fnmatch
for filename in os.listdir('.'):
    if fnmatch.fnmatch(filename, '*.txt'): # 相配形式为星号,表示放肆的字符
        os.remove(filename)

除去同目录上面txt文件(利用os,fnmacth模块卡塔尔,osfnmacth

import os
import fnmatch
for filename in os.listdir('.'):
    if fnmatch.fnmatch(filename, '*.txt'): # 般配方式为星号,表示任意的字符
        os.remove(filename)

import os import fnmatch for filename in os.listdir('.'): if fnmatch.fnmatch(filename, '*.txt'): # 相配格局...

python中对文本、文件夹(文件操作函数卡塔尔的操作供给涉及到os模块和shutil模块。

最宗旨的公文操作当然正是在文书中读写多少。那也是非常轻便调节的。今后开荒叁个文书以开展写操作: 

操作前需求 import os;

  1. fileHandle = open ( 'test.txt', 'w' )  

回到当前目录,不富含文件名: os.getcwd();

fileHandle = open ( 'test.txt', 'w' ) 

回来钦点目录下的装有文件和目录名:os.listdir("dirname");

‘w'是指文件将被写入数据,语句的别样一些很好理解。下一步正是将数据写入文件: 

os.mknod("test.txt") 创设空文件,未测验成功,报错OSError: [Errno 1] Operation not permitted,还一直不查原因,用另三个情势来落实os.system("touch test.txt");

  1. fileHandle.write ( 'This is a test.nReally, it is.' )  

函数用来删除叁个文件:os.remove();

fileHandle.write ( 'This is a test.nReally, it is.' ) 

去除五个目录:os.removedirs(r“c:python”卡塔尔

其后生可畏讲话将“This is a test.”写入文件的率先行,“Really, it is.”写入文件的第二行。最终,大家必要做清理专门的工作,并且关闭文件: 

查实给出的渠道是不是是一个文书:os.path.isfile()

  1. fileHandle.close()  

检查给出的门路是或不是是八个索引:os.path.isdir()

fileHandle.close() 

判断是或不是是相对路线:os.path.isabs()

正如你所见,在Python的面向对象机制下,那的确特别轻松。必要静心的是,当您再度利用“w”格局在文件中写多少,全数原先的开始和结果都会被剔除。假如想保留原本的内容,能够选择“a”形式在文书中最后附加数据: 

查实给出的路子是不是真地存:os.path.exists();

  1. fileHandle = open ( 'test.txt', 'a' )  
  2. fileHandle.write ( 'nnBottom line.' )  
  3. fileHandle.close()  

归来三个门道的目录名和文书名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')

fileHandle = open ( 'test.txt', 'a' ) 
fileHandle.write ( 'nnBottom line.' ) 
fileHandle.close() 

分别扩张名:os.path.splitext()

下一场,大家读取test.txt,并将内容呈现出来: 

获得路线名:os.path.dirname()

  1. fileHandle = open ( 'test.txt' )  
  2. print fileHandle.read()  
  3. fileHandle.close()  

赢得文件名:os.path.basename()

fileHandle = open ( 'test.txt' ) 
print fileHandle.read() 
fileHandle.close() 

运行shell命令: os.system()

以上语句将读取整个文件并展现中间的数码。大家也得以读取文件中的生龙活虎行: 

读取和装置境况变量:os.getenv() 与os.putenv()

  1. fileHandle = open ( 'test.txt' )  
  2. print fileHandle.readline() # "This is a test."  
  3. fileHandle.close()  

交付当前平台选择的行终止符:os.linesep Windows使用'rn',Linux使用'n'而Mac使用'r'

fileHandle = open ( 'test.txt' ) 
print fileHandle.readline() # "This is a test." 
fileHandle.close() 

指令你正在使用的阳台:os.name 对于Windows,它是'nt',而对此Linux/Unix客户,它是'posix'

再者,也得以将文件内容保留到五个list中: 

重命名:os.rename(old, new)

  1. fileHandle = open ( 'test.txt' )  
  2. fileList = fileHandle.readlines()<div></div>  
  3. for fileLine in fileList:  
    4.     print '>>', fileLine  
  4. fileHandle.close()  

始建多级目录:os.makedirs(r“c:pythontest”卡塔尔

fileHandle = open ( 'test.txt' ) 
fileList = fileHandle.readlines() 
for fileLine in fileList: 
print '>>', fileLine 
fileHandle.close() 

创立单个目录:os.mkdir(“test”卡塔尔国

Python在读取叁个文书时,会记住其在文件中的地点,如下所示: 

收获文件属性:os.stat(file卡塔 尔(阿拉伯语:قطر‎

  1. fileHandle = open ( 'test.txt' )  
  2. garbage = fileHandle.readline()  
  3. fileHandle.readline() # "Really, it is."fileHandle.close()  

更正文件权限与时间戳:os.chmod(file卡塔尔

fileHandle = open ( 'test.txt' ) 
garbage = fileHandle.readline() 
fileHandle.readline() # "Really, it is."fileHandle.close() 

甘休当前进度:os.exit(卡塔 尔(英语:State of Qatar)

能够看见,独有第二行展现出来。然则,大家可以让Python从头初阶读来消除那一个主题材料: 

收获文件大小:os.path.getsize(filename卡塔尔国

  1. fileHandle = open ( 'test.txt' )  
  2. garbage = fileHandle.readline()  
  3. fileHandle.seek ( 0 )  
  4. print fileHandle.readline() # "This is a test."  
  5. fileHandle.close()  

文本操作:
fp = open("test.txt",w) 直接张开二个文本,如若文件不设有则创立文件

fileHandle = open ( 'test.txt' ) 
garbage = fileHandle.readline() 
fileHandle.seek ( 0 ) 
print fileHandle.readline() # "This is a test." 
fileHandle.close() 

关于open 模式:

在上边那几个事例中,大家让Python从文件第一个字节伊始读取数据。所以,第风流倜傥行文字呈现了出去。当然,大家也可以赢得Python在文件中的地方: 

w 以写形式张开(清空原内容),
a 以扩充方式展开 (从 EOF 起首, 需要时成立新文件)
r 以读写形式张开
w 以读写形式张开 (参见 w )
a 以读写情势张开 (参见 a )
rb 以二进制读格局张开
wb 以二进制写格局张开 (参见 w )
ab 以二进制追加方式展开 (参见 a )
rb 以二进制读写形式展开 (参见 r )
wb 以二进制读写情势展开 (参见 w )
ab 以二进制读写形式张开 (参见 a )

  1. fileHandle = open ( 'test.txt' )  
  2. print fileHandle.readline() # "This is a test."  
  3. print fileHandle.tell() # "17"  
  4. print fileHandle.readline() # "Really, it is."  

 

fileHandle = open ( 'test.txt' ) 
print fileHandle.readline() # "This is a test." 
print fileHandle.tell() # "17" 
print fileHandle.readline() # "Really, it is." 

fp.read([size]) #size为读取的尺寸,以byte为单位

也许在文件中二次读取多少个字节的情节: 

fp.readline([size]) #读生龙活虎行,假若定义了size,有十分的大可能率回到的只是单排的后生可畏有个别

  1. fileHandle = open ( 'test.txt' )  
  2. print fileHandle.read ( 1 ) # "T"  
  3. fileHandle.seek ( 4 )  
  4. print FileHandle.read ( 1 ) # " "(最早的作品有错)  

fp.readlines([size]) #把文件每生机勃勃行作为叁个list的一个分子,并赶回这一个list。其实它的里边是透过循环调用readline()来兑现的。如果提供size参数,size是表示读取内容的路程,也便是说可能只读到文件的风姿浪漫局地。

fileHandle = open ( 'test.txt' ) 
print fileHandle.read ( 1 ) # "T" 
fileHandle.seek ( 4 ) 
print FileHandle.read ( 1 ) # " "(原版的书文有错) 

fp.write(str) #把str写到文件中,write()并不会在str后增进一个换行符

在Windows和Macintosh情状下,一时恐怕须要以二进制方式读写文件,比方图片和可履行文件。那时,只要在张开文件的法子参数中扩大三个“b”就能够: 

fp.writelines(seq) #把seq的从头到尾的经过全方位写到文件中(多行三次性写入)。那几个函数也只是忠诚地写入,不会在每行后边加上其余东西。

  1. fileHandle = open ( 'testBinary.txt', 'wb' )  
  2. fileHandle.write ( 'There is no spoon.' )  
  3. fileHandle.close()  

fp.close() #闭馆文件。python会在一个文件不用后自动关闭文件,不过这生龙活虎效用尚未保险,最佳依然养成自身关闭的习于旧贯。 要是贰个文件在关闭后还对其进展操作会产生ValueError

fileHandle = open ( 'testBinary.txt', 'wb' ) 
fileHandle.write ( 'There is no spoon.' ) 
fileHandle.close() 

fp.flush() #python文件操作,删除同目录下面txt文件。把缓冲区的剧情写入硬盘

  1. fileHandle = open ( 'testBinary.txt', 'rb' )  
  2. print fileHandle.read()  
  3. fileHandle.close()  

fp.fileno() #回来八个长整型的”文件标签“

fileHandle = open ( 'testBinary.txt', 'rb' ) 
print fileHandle.read() 
fileHandle.close() 

fp.isatty() #文件是或不是是三个极限设备文件(unix系统中的卡塔 尔(阿拉伯语:قطر‎

二、从现成文件中得到音信 
运用Python中的模块,能够从现成文件中获取新闻。使用“os”模块和“stat”模块可以收获文件的主干新闻: 

fp.tell() #归来文件操作标识的近期地方,以文件的发端为原点

  1. import os  
  2. import stat  
  3. import time<div></div>  
    4.   
  4. fileStats = os.stat ( 'test.txt' )  
  5. fileInfo = {  
    7.     'Size' : fileStats [ stat.ST_SIZE ],  
    8.     'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),  
    9.     'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),  
    10.     'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),  
    11.     'Mode' : fileStats [ stat.ST_MODE ]  
  6. }  
    13.   
  7. for infoField, infoValue in fileInfo:  
    15.     print infoField, ':' infoValue  
  8. if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):  
    17.     print 'Directory. '  
  9. else:  
    19.     print 'Non-directory.'  

fp.next() #归来下生龙活虎行,并将文件操作标识位移到下风度翩翩行。把四个file用于for … in file那样的说话时,便是调用next()函数来促成遍历的。

import os 
import stat 
import time 

fp.seek(offset[,whence]) #将文件打操作标志移到offset的职位。这一个offset日常是相对于文件的启幕来计算的,平常为正数。但如若提供了whence参数就不自然了,whence可感到0表示从头开端计算,1意味着以当下地点为原点计算。2意味以文件末尾为原点实行估测计算。须求在意,假设文件以a或a 的方式展开,每趟进行写操作时,文件操作标识会自动回到到文件末尾。

fileStats = os.stat ( 'test.txt' ) 
fileInfo = { 
'Size' : fileStats [ stat.ST_SIZE ], 
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ), 
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ), 
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ), 
'Mode' : fileStats [ stat.ST_MODE ] 

fp.truncate([size]) #把文件裁成规定的大大小小,暗中认可的是裁到当前文件操作标识的职位。假若size比文件的分寸还要大,依赖系统的不等恐怕是不改造文件,也说不好是用0把文件补到相应的轻重,也大概是以局部自由的剧情丰硕去。

for infoField, infoValue in fileInfo: 
print infoField, ':' infoValue 
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
print 'Directory. ' 
else: 
print 'Non-directory.' 

 

地点那个事例创设了多少个带有文件中央音讯的dictionary。然后展现了连带音讯,何况告诉我们开垦的是还是不是为目录。大家也得以试一下展开的是还是不是是别的三种等级次序: 

目录操作:
os.mkdir("file") 成立目录
复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只好是文本夹,newfile能够是文件,也得以是指标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只可以是目录,且newdir必得空中楼阁
重命名文件(目录卡塔 尔(阿拉伯语:قطر‎
os.rename("oldname","newname") 文件或目录都以接受那条命令
移动文件(目录卡塔 尔(阿拉伯语:قطر‎
shutil.move("oldpos","newpos")
剔除文件
os.remove("file")
去除目录
os.rmdir("dir")只可以删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都能够删
更改目录
os.chdir("path") 换路径

  1. import os  
  2. import stat  
    3.   
  3. fileStats = os.stat ( 'test.txt' )  
  4. fileMode = fileStats [ stat.ST_MODE ]  
  5. if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ):  
    7.     print 'Regular file.'  
  6. elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):  
    9.     print 'Directory.'  
  7. elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ):  
    11.     print 'Shortcut.'  
  8. elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ):  
    13.     print 'Socket.'  
  9. elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ):  
    15.     print 'Named pipe.'  
  10. elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ):  
    17.     print 'Block special device.'  
  11. elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ):  
    19.     print 'Character special device.'  

import os 
import stat 

  1. fileHandle = open ( 'test.txt', 'w' ) 

fileStats = os.stat ( 'test.txt' ) 
fileMode = fileStats [ stat.ST_MODE ] 
if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): 
print 'Regular file.' 
elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
print 'Directory.' 
elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ): 
print 'Shortcut.' 
elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ): 
print 'Socket.' 
elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ): 
print 'Named pipe.' 
elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ): 
print 'Block special device.' 
elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ): 
print 'Character special device.' 

fileHandle = open ( 'test.txt', 'w' )

别的,我们得以使用“os.path”来博取基本新闻: 

‘w'是指文件将被写入数据,语句的其余一些很好驾驭。下一步正是将数据写入文件:

  1. import os.path  
    2.   
  2. fileStats = 'test.txt'  
  3. if os.path.isdir ( fileStats ):  
    5.     print 'Directory.'  
  4. elif os.path.isfile ( fileStats ):  
    7.     print 'File.'  
  5. elif os.path.islink ( fileStats ):  
    9.     print 'Shortcut.'  
  6. elif os.path.ismount ( fileStats ):  
    11.     print 'Mount point.'  
  1. fileHandle.write ( 'This is a test.nReally, it is.' ) 

import os.path 

fileHandle.write ( 'This is a test.nReally, it is.' )

fileStats = 'test.txt' 
if os.path.isdir ( fileStats ): 
print 'Directory.' 
elif os.path.isfile ( fileStats ): 
print 'File.' 
elif os.path.islink ( fileStats ): 
print 'Shortcut.' 
elif os.path.ismount ( fileStats ): 
print 'Mount point.' 

其后生可畏讲话将“This is a test.”写入文件的首先行,“Really, it is.”写入文件的第二行。末了,咱们供给做清理专门的学业,並且关闭文件:

三、目录 
和普通文书黄金年代律,关于目录的操作也十分轻松精晓。首先,列出二个目录的从头到尾的经过: 

  1. fileHandle.close() 
  1. import os  
    2.   
  2. for fileName in os.listdir ( '/' ):  
    4.     print fileName  

fileHandle.close()

import os 

正如您所见,在Python的面向对象机制下,这确实非常轻易。要求注意的是,当你再次使用“w”情势在文书中写多少,全体原先的剧情都会被去除。若是想保留原本的从头到尾的经过,能够接收“a”方式在文件中最后附加数据:

for fileName in os.listdir ( '/' ): 
print fileName 

  1. fileHandle = open ( 'test.txt', 'a' ) 
  2. fileHandle.write ( 'nnBottom line.' ) 
  3. fileHandle.close() 

正如你所见,那极粗略,用三行代码就足以成功。 
始建目录也超级粗略: 

fileHandle = open ( 'test.txt', 'a' )
fileHandle.write ( 'nnBottom line.' )
fileHandle.close()

  1. import os  
    2.   
  2. os.mkdir ( 'testDirectory' )  

接下来,大家读取test.txt,并将内容展示出来:

import os 

  1. fileHandle = open ( 'test.txt' ) 
  2. print fileHandle.read() 
  3. fileHandle.close() 

os.mkdir ( 'testDirectory' ) 

fileHandle = open ( 'test.txt' )
print fileHandle.read()
fileHandle.close()

删去刚才创设的目录: 

如上语句将读取整个文件并出示中间的数码。我们也能够读取文件中的风度翩翩行:

  1. import os  
    2.   
  2. os.rmdir ( 'testDirectory )  
  1. fileHandle = open ( 'test.txt' ) 
  2. print fileHandle.readline() # "This is a test." 
  3. fileHandle.close() 

import os 

fileHandle = open ( 'test.txt' )
print fileHandle.readline() # "This is a test."
fileHandle.close()

os.rmdir ( 'testDirectory ) 

何况,也能够将文件内容保留到一个list中:

嗯,能够创制多级目录: 

  1. fileHandle = open ( 'test.txt' ) 
  2. fileList = fileHandle.readlines()<div></div> 
  3. for fileLine in fileList: 
    4.     print '>>', fileLine 
  4. fileHandle.close() 
  1. import os  
    2.   
  2. os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' )  

fileHandle = open ( 'test.txt' )
fileList = fileHandle.readlines()
for fileLine in fileList:
print '>>', fileLine
fileHandle.close()

import os 

Python在读取七个文书时,会记住其在文件中之处,如下所示:

os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 

  1. fileHandle = open ( 'test.txt' ) 
  2. garbage = fileHandle.readline() 
  3. fileHandle.readline() # "Really, it is."fileHandle.close() 

若果未有在成立的文书夹中丰富任张俊西,即可叁回性将它们整个刨除(即,删除所列的兼具空文件夹卡塔尔: 

fileHandle = open ( 'test.txt' )
garbage = fileHandle.readline()
fileHandle.readline() # "Really, it is."fileHandle.close()

  1. import os  
    2.   
  2. os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' )  

能够看出,独有第二行突显出来。可是,大家可以让Python从头开首读来消灭这几个难点:

import os 

  1. fileHandle = open ( 'test.txt' ) 
  2. garbage = fileHandle.readline() 
  3. fileHandle.seek ( 0 ) 
  4. print fileHandle.readline() # "This is a test." 
  5. fileHandle.close() 

os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 

fileHandle = open ( 'test.txt' )
garbage = fileHandle.readline()
fileHandle.seek ( 0 )
print fileHandle.readline() # "This is a test."
fileHandle.close()

当要求对一个一定的文件类型进行操作时,大家可以接受“fnmatch”模块。以下是展现“.txt”文件的源委和“.exe”文件的文件名: 

在上头这些事例中,大家让Python从文件第五个字节开始读取数据。所以,第风华正茂行文字突显了出来。当然,大家也能够博得Python在文书中之处:

  1. import fnmatch  
  2. import os  
    3.   
  3. for fileName in os.listdir ( '/' ):  
    5.     if fnmatch.fnmath ( fileName, '*.txt' ):  
    6.         print open ( fileName ).read()  
    7.     elif fnmatch.fnmatch ( fileName, '*.exe' ):  
    8.         print fileName  
  1. fileHandle = open ( 'test.txt' ) 
  2. print fileHandle.readline() # "This is a test." 
  3. print fileHandle.tell() # "17" 
  4. print fileHandle.readline() # "Really, it is." 

import fnmatch 
import os 

fileHandle = open ( 'test.txt' )
print fileHandle.readline() # "This is a test."
print fileHandle.tell() # "17"
print fileHandle.readline() # "Really, it is."

for fileName in os.listdir ( '/' ): 
if fnmatch.fnmath ( fileName, '*.txt' ): 
print open ( fileName ).read() 
elif fnmatch.fnmatch ( fileName, '*.exe' ): 
print fileName 

仍旧在文书中叁次读取多少个字节的源委:

“*”字符能够代表大肆长度的字符。假使要同盟一个字符,则动用“?”符号: 

  1. fileHandle = open ( 'test.txt' ) 
  2. print fileHandle.read ( 1 ) # "T" 
  3. fileHandle.seek ( 4 ) 
  4. print FileHandle.read ( 1 ) # " "(原作有错) 
  1. import fnmatch  
  2. import os  
    3.   
  3. for fileName in os.listdir ( '/' ):  
    5.     if fnmatch.fnmatch ( fileName, '?.txt' ):  
    6.         print 'Text file.'  

fileHandle = open ( 'test.txt' )
print fileHandle.read ( 1 ) # "T"
fileHandle.seek ( 4 )
print FileHandle.read ( 1 ) # " "(最早的文章有错)

import fnmatch 
import os 

在Windows和Macintosh碰到下,不经常大概必要以二进制情势读写文件,举个例子图片和可试行文件。那时候,只要在展开文件的章程参数中扩大一个“b”就可以:

for fileName in os.listdir ( '/' ): 
if fnmatch.fnmatch ( fileName, '?.txt' ): 
print 'Text file.' 

  1. fileHandle = open ( 'testBinary.txt', 'wb' ) 
  2. fileHandle.write ( 'There is no spoon.' ) 
  3. fileHandle.close() 

“fnmatch”模块协理正则表明式: 

fileHandle = open ( 'testBinary.txt', 'wb' )
fileHandle.write ( 'There is no spoon.' )
fileHandle.close()

  1. import fnmatch  
  2. import os  
  3. import re  
    4.   
  4. filePattern = fnmatch.translate ( '*.txt' )  
  5. for fileName in os.listdir ( '/' ):  
    7.     if re.match ( filePattern, fileName ):  
    8.         print 'Text file.'  
  1. fileHandle = open ( 'testBinary.txt', 'rb' ) 
  2. print fileHandle.read() 
  3. fileHandle.close() 

import fnmatch 
import os 
import re 

fileHandle = open ( 'testBinary.txt', 'rb' )
print fileHandle.read()
fileHandle.close()

filePattern = fnmatch.translate ( '*.txt' ) 
for fileName in os.listdir ( '/' ): 
if re.match ( filePattern, fileName ): 
print 'Text file.' 

二、从现成文件中获撤除息
使用Python中的模块,能够从现有文件中获取新闻。使用“os”模块和“stat”模块能够得到文件的主题消息:

若只供给协作生机勃勃种档期的顺序的公文,越来越好的方法是接受“glob”模块。该模块的格式和“fnmatch”雷同: 

  1. import os 
  2. import stat 
  3. import time<div></div> 
    4.  
  4. fileStats = os.stat ( 'test.txt' ) 
  5. fileInfo = { 
    7.     'Size' : fileStats [ stat.ST_SIZE ], 
    8.     'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ), 
    9.     'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ), 
    10.     'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ), 
    11.     'Mode' : fileStats [ stat.ST_MODE ] 

  6. 13.  
  7. for infoField, infoValue in fileInfo: 
    15.     print infoField, ':' infoValue 
  8. if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
    17.     print 'Directory. ' 
  9. else: 
    19.     print 'Non-directory.' 
  1. import glob  
    2.   
  2. for fileName in glob.glob ( '*.txt' ):  
    4.     print 'Text file.'  

import os
import stat
import time

import glob 

fileStats = os.stat ( 'test.txt' )
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}

for fileName in glob.glob ( '*.txt' ): 
print 'Text file.' 

for infoField, infoValue in fileInfo:
print infoField, ':' infoValue
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory. '
else:
print 'Non-directory.'

行使一定范围的字符来合作相似有效,就像在正则表明式中动用同黄金年代。要是你想要呈现增加名前唯有壹人数字的文件的文件名: 

地点这些例子创制了二个包括文件中央音信的dictionary。然后展现了连带新闻,而且告诉我们展开的是还是不是为目录。我们也能够试一下张开的是或不是是其余两种档期的顺序:

  1. import glob  
    2.   
  2. for fileName in glob.glob ( '[0-9].txt' ):  
    4.     print filename  
  1. import os 
  2. import stat 
    3.  
  3. fileStats = os.stat ( 'test.txt' ) 
  4. fileMode = fileStats [ stat.ST_MODE ] 
  5. if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): 
    7.     print 'Regular file.' 
  6. elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 
    9.     print 'Directory.' 
  7. elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ): 
    11.     print 'Shortcut.' 
  8. elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ): 
    13.     print 'Socket.' 
  9. elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ): 
    15.     print 'Named pipe.' 
  10. elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ): 
    17.     print 'Block special device.' 
  11. elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ): 
    19.     print 'Character special device.' 

import glob 

import os
import stat

for fileName in glob.glob ( '[0-9].txt' ): 
print filename 

fileStats = os.stat ( 'test.txt' )
fileMode = fileStats [ stat.ST_MODE ]
if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ):
print 'Regular file.'
elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory.'
elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ):
print 'Shortcut.'
elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ):
print 'Socket.'
elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ):
print 'Named pipe.'
elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ):
print 'Block special device.'
elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ):
print 'Character special device.'

“glob”模块利用“fnmatch”模块来促成。 

别的,大家能够使用“os.path”来获得基本音讯:

四、数据编组 
行使前生机勃勃节中牵线的模块,能够实将来文件中对字符串的读写。 
而是,不经常,你大概需求传递此外项目标数量,如list、tuple、dictionary和任何对象。在Python中,你能够行使Pickling来成功。你能够动用Python标准库中的“pickle”模块产生数据编组。 
上面,大家来编组一个包含字符串和数字的list: 

  1. import os.path 
    2.  
  2. fileStats = 'test.txt' 
  3. if os.path.isdir ( fileStats ): 
    5.     print 'Directory.' 
  4. elif os.path.isfile ( fileStats ): 
    7.     print 'File.' 
  5. elif os.path.islink ( fileStats ): 
    9.     print 'Shortcut.' 
  6. elif os.path.ismount ( fileStats ): 
    11.     print 'Mount point.' 
  1. import pickle  
    2.   
  2. fileHandle = open ( 'pickleFile.txt', 'w' )  
  3. testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ]  
  4. pickle.dump ( testList, fileHandle )  
  5. fileHandle.close()  

import os.path

import pickle 

fileStats = 'test.txt'
if os.path.isdir ( fileStats ):
print 'Directory.'
elif os.path.isfile ( fileStats ):
print 'File.'
elif os.path.islink ( fileStats ):
print 'Shortcut.'
elif os.path.ismount ( fileStats ):
print 'Mount point.'

fileHandle = open ( 'pickleFile.txt', 'w' ) 
testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ] 
pickle.dump ( testList, fileHandle ) 
fileHandle.close() 

三、目录
和日常性文书大器晚成律,关于目录的操作也相当轻松驾驭。首先,列出三个目录的从头到尾的经过:

拆分编组同样简单: 

  1. import os 
    2.  
  2. for fileName in os.listdir ( '/' ): 
    4.     print fileName 
  1. import pickle  
    2.   
  2. fileHandle = open ( 'pickleFile.txt' )  
  3. testList = pickle.load ( fileHandle )  
  4. fileHandle.close()  

import os

import pickle 

for fileName in os.listdir ( '/' ):
print fileName

fileHandle = open ( 'pickleFile.txt' ) 
testList = pickle.load ( fileHandle ) 
fileHandle.close() 

正如您所见,那不会细小略,用三行代码就可以做到。
成立目录也相当粗略:

近年来小试锋芒存储尤其头眼昏花的数额: 

  1. import os 
    2.  
  2. os.mkdir ( 'testDirectory' ) 
  1. import pickle  
    2.   
  2. fileHandle = open ( 'pickleFile.txt', 'w' )  
  3. testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ]  
  4. pickle.dump ( testList, fileHandle )  
  5. fileHandle.close()  

import os

import pickle 

os.mkdir ( 'testDirectory' )

fileHandle = open ( 'pickleFile.txt', 'w' ) 
testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ] 
pickle.dump ( testList, fileHandle ) 
fileHandle.close() 

删除刚才创造的目录:

  1. import pickle  
    2.   
  2. fileHandle = open ( 'pickleFile.txt' )  
  3. testList = pickle.load ( fileHandle )  
  4. fileHandle.close()  
  1. import os 
    2.  
  2. os.rmdir ( 'testDirectory ) 

import pickle 

import os

fileHandle = open ( 'pickleFile.txt' ) 
testList = pickle.load ( fileHandle ) 
fileHandle.close() 

os.rmdir ( 'testDirectory )

看来,使用Python的“pickle”模块编组确实相当的轻巧。众多目的足以由此它来囤积到文件中。假诺能够的话,“cPickle”一样胜任那么些职业。它和“pickle”模块同样,可是速度更加快: 

啊,能够创设多级目录:

  1. import cPickle  
    2.   
  2. fileHandle = open ( 'pickleFile.txt', 'w' )  
  3. cPickle.dump ( 1776, fileHandle )  
  4. fileHandle.close()  
  1. import os 
    2.  
  2. os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 

import cPickle 

import os

fileHandle = open ( 'pickleFile.txt', 'w' ) 
cPickle.dump ( 1776, fileHandle ) 
fileHandle.close() 

os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' )

五、创建“虚拟”文件 
你用到的无数模块满含须求文件对象作为参数的主意。不过,有的时候创造并使用一个实打实的文书并令人深感有个别麻烦。所幸的是,在Python中,你能够利用“StringIO”模块来成立文件并将其保存在内部存款和储蓄器中: 

要是未有在开创的文书夹中丰富任李映辉西,就足以三次性将它们整个刨除(即,删除所列的具备空文件夹卡塔尔国:

  1. import StringIO  
    2.   
  2. fileHandle = StringIO.StringIO ( "Let freedom ring" )  
  3. print fileHandle.read() # "Let freedom ring."  
  4. fileHandle.close()  
  1. import os 
    2.  
  2. os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 

import StringIO 

import os

fileHandle = StringIO.StringIO ( "Let freedom ring" ) 
print fileHandle.read() # "Let freedom ring." 
fileHandle.close() 

os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' )

cStringIO”模块相像有效。它的选用办法和“StringIO”相仿,但犹如“cPickle”之于“pickle”,它速度越来越快: 

当必要对二个一定的文件类型实行操作时,我们能够选拔“fnmatch”模块。以下是突显“.txt”文件的内容和“.exe”文件的文件名:

  1. import cStringIO  
    2.   
  2. fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" )  
  3. print fileHandle.read() # "To Kill a Mockingbid"  
  4. fileHandle.close()  
  1. import fnmatch 
  2. import os 
    3.  
  3. for fileName in os.listdir ( '/' ): 
    5.     if fnmatch.fnmath ( fileName, '*.txt' ): 
    6.         print open ( fileName ).read() 
    7.     elif fnmatch.fnmatch ( fileName, '*.exe' ): 
    8.         print fileName 

import cStringIO 

import fnmatch
import os

fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" ) 
print fileHandle.read() # "To Kill a Mockingbid" 
fileHandle.close() 

for fileName in os.listdir ( '/' ):
if fnmatch.fnmath ( fileName, '*.txt' ):
print open ( fileName ).read()
elif fnmatch.fnmatch ( fileName, '*.exe' ):
print fileName

结论 
文本管理,是不菲编制程序语言的技士在编制应用程序是常事碰着的难题。幸亏,和任何语言相比较,Python使其奇异地轻易。Python的标准库中提供了点不清有关的模块扶植技师消除那上边的难题,而它的面向对象的编写制定也简化了操作。 
好了,未来您已经明白了Python粤语件管理的基本知识,能够在今后的应用程序中很好地利用了。

“*”字符可以象征任性长度的字符。要是要合营二个字符,则选用“?”符号:

原帖:

  1. import fnmatch 
  2. import os 
    3.  
  3. for fileName in os.listdir ( '/' ): 
    5.     if fnmatch.fnmatch ( fileName, '?.txt' ): 
    6.         print 'Text file.' 

ps:三种常用的读取文件的形式。

import fnmatch
import os

  1. f = open("bigFile.txt", "r")  
  2. while True:  
  3.     line = f.readline()  
  4.     if line:  
  5.         pass    # do something here  
  6.     else:  
  7.         break  
  8. f.close() 

for fileName in os.listdir ( '/' ):
if fnmatch.fnmatch ( fileName, '?.txt' ):
print 'Text file.'

 

“fnmatch”模块援助正则表达式:

  1. f = open("bigFile.txt", "r")  
  2. for line in f:  
  3.     pass    # do something here  
  4. f.close()  
  1. import fnmatch 
  2. import os 
  3. import re 
    4.  
  4. filePattern = fnmatch.translate ( '*.txt' ) 
  5. for fileName in os.listdir ( '/' ): 
    7.     if re.match ( filePattern, fileName ): 
    8.         print 'Text file.' 

import fnmatch
import os
import re

filePattern = fnmatch.translate ( '*.txt' )
for fileName in os.listdir ( '/' ):
if re.match ( filePattern, fileName ):
print 'Text file.'

若只要求相称后生可畏种等级次序的文书,越来越好的章程是运用“glob”模块。该模块的格式和“fnmatch”相通:

  1. import glob 
    2.  
  2. for fileName in glob.glob ( '*.txt' ): 
    4.     print 'Text file.' 

import glob

for fileName in glob.glob ( '*.txt' ):
print 'Text file.'

行使一定约束的字符来同盟照像有效,犹如在正则表明式中接受同大器晚成。纵然你想要展现扩充名前独有壹人数字的文件的文件名:

  1. import glob 
    2.  
  2. for fileName in glob.glob ( '[0-9].txt' ): 
    4.     print filename 

import glob

for fileName in glob.glob ( '[0-9].txt' ):
print filename

“glob”模块利用“fnmatch”模块来完成。

四、数据编组
运用前风流倜傥节中牵线的模块,可以兑今后文书中对字符串的读写。
而是,有时,你大概供给传递别的连串的数量,如list、tuple、dictionary和其余对象。在Python中,你能够运用Pickling来成功。你能够选拔Python标准库中的“pickle”模块产生多少编组。
上边,我们来编组一个分包字符串和数字的list:

  1. import pickle 
    2.  
  2. fileHandle = open ( 'pickleFile.txt', 'w' ) 
  3. testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ] 
  4. pickle.dump ( testList, fileHandle ) 
  5. fileHandle.close() 

import pickle

fileHandle = open ( 'pickleFile.txt', 'w' )
testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ]
pickle.dump ( testList, fileHandle )
fileHandle.close()

拆分编组相似简单:

  1. import pickle 
    2.  
  2. fileHandle = open ( 'pickleFile.txt' ) 
  3. testList = pickle.load ( fileHandle ) 
  4. fileHandle.close() 

import pickle

fileHandle = open ( 'pickleFile.txt' )
testList = pickle.load ( fileHandle )
fileHandle.close()

最近尝试存款和储蓄特别目眩神摇的数量:

  1. import pickle 
    2.  
  2. fileHandle = open ( 'pickleFile.txt', 'w' ) 
  3. testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ] 
  4. pickle.dump ( testList, fileHandle ) 
  5. fileHandle.close() 

import pickle

fileHandle = open ( 'pickleFile.txt', 'w' )
testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ]
pickle.dump ( testList, fileHandle )
fileHandle.close()

  1. import pickle 
    2.  
  2. fileHandle = open ( 'pickleFile.txt' ) 
  3. testList = pickle.load ( fileHandle ) 
  4. fileHandle.close() 

import pickle

fileHandle = open ( 'pickleFile.txt' )
testList = pickle.load ( fileHandle )
fileHandle.close()

总的看,使用Python的“pickle”模块编组确实十分轻巧。众多对象能够透过它来囤积到文件中。若是得以的话,“cPickle”相仿胜任这几个工作。它和“pickle”模块同样,不过速度越来越快:

  1. import cPickle 
    2.  
  2. fileHandle = open ( 'pickleFile.txt', 'w' ) 
  3. cPickle.dump ( 1776, fileHandle ) 
  4. fileHandle.close() 

import cPickle

fileHandle = open ( 'pickleFile.txt', 'w' )
cPickle.dump ( 1776, fileHandle )
fileHandle.close()

五、创建“虚拟”文件
你用到的多数模块包涵需求文件对象作为参数的诀要。不过,有的时候创造并使用三个真真的文件并令人深感有个别麻烦。所幸的是,在Python中,你能够利用“StringIO”模块来创立文件并将其保存在内部存款和储蓄器中:

  1. import StringIO 
    2.  
  2. fileHandle = StringIO.StringIO ( "Let freedom ring" ) 
  3. print fileHandle.read() # "Let freedom ring." 
  4. fileHandle.close() 

import StringIO

fileHandle = StringIO.StringIO ( "Let freedom ring" )
print fileHandle.read() # "Let freedom ring."
fileHandle.close()

cStringIO”模块同样有效。它的使用办法和“StringIO”同样,但就像是“cPickle”之于“pickle”,它速度更加快:

  1. import cStringIO 
    2.  
  2. fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" ) 
  3. print fileHandle.read() # "To Kill a Mockingbid" 
  4. fileHandle.close() 

import cStringIO

fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" )
print fileHandle.read() # "To Kill a Mockingbid"
fileHandle.close()

本文由星彩网app下载发布于计算机编程,转载请注明出处:python文件操作,删除同目录下面txt文件

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。