文章目录

  • 一、pyhton 文件夹
  • 取得当前文件夹——os.getcwd()
  • 创建子文件夹——os.makedirs(“path”)
  • 更改当前文件夹路径——os.chdir()
  • 将路径分解为目录名和文件名——os.path.split()
  • 判断路径(文件夹或文件)存在——os.path.exists()
  • 判断一个路径(目录或文件夹)存在——os.path.isdir
  • 获取文件夹中文件列表——os.listdir(“ ”)
  • 删除空文件夹——os.rmdir(“ ”)
  • python 文件
  • 分解文件的扩展名——os.pathon.splittext()
  • 判断路径下文件存在——os.path.isfile
  • 打开文件——open(‘file’[,’mode’])
  • 文件夹、文件删除、移动、复制操作
  • 参考文献



语言只有和外部连起来操作才会实现更强大的功能,比如操作文件、数据库等,这样数据可以有一块单独存储的地方,而不是存放在内存中。接下来介绍对于文件夹、文件的相关Python操作命令。

有关文件夹与文件的查找,删除等功能 在 os 模块中实现。使用时需先导入这个模块:import os

一、pyhton 文件夹
取得当前文件夹——os.getcwd()
>>> import os
>>> s=os.getcwd()#获得当前运行脚本所在目录
>>> s
'C:\\Python27'
创建子文件夹——os.makedirs(“path”)
>>> os.makedirs("C:\\temp\\test") #这是C盘下就创建了temp目录,temp下嵌套的文件夹是test
>>> import time
>>> folder = time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime())
>>> os.makedirs(r'%s/%s'%(os.getcwd(),folder)) #创建以时间命名文件夹名

3行创建以当前时间命名的文件夹,4行在当前目录后加==/folder==。

更改当前文件夹路径——os.chdir()

相当于dos或linux下的cd命令。

>>> os.chdir('c:\\')  #将当前目录改为C盘根目录下
将路径分解为目录名和文件名——os.path.split()

格式为:fpath , fname = os.path.split( “要分解的路径”)

>>> a,b=os.path.split("c:\\dir1\\dir2\\file.txt")
>>> print a
c:\dir1\dir2
>>> print b
file.txt
判断路径(文件夹或文件)存在——os.path.exists()

格式为:os.path.exists(“要判断的路径或文件”)

>>> os.path .exists ("C:\\") #该路径存在
True
>>> os.path .exists ("C:\\123\\") #该路径不存在
False
>>> os.path .exists ("C:\\123.txt") #该文件不存在
False
>>> os.path .exists ("C:\\test.txt")  #该文件存在
True
判断一个路径(目录或文件夹)存在——os.path.isdir
>>> os.path .isdir("C:\\")
True
>>> os.path .isdir("H:\\")
False
获取文件夹中文件列表——os.listdir(“ ”)

相当于linux下的ls命令。

>>> os.listdir("C:\\")   #这里包括隐藏文件也显示出来了
['$Recycle.Bin', '360ld', '360rescue', '360SANDBOX',  'System Volume Information', 'test.txt', 'Users', 'Windows']
删除空文件夹——os.rmdir(“ ”)
>>> os.rmdir("C:\\temp\\test") #注意只删除了test目录
>>> os.rmdir("C:\\temp")  #这里才删除了temp目录
python 文件
分解文件的扩展名——os.pathon.splittext()

格式为:fpath_name , ftext = os.path.splitext( “要分解的路径”)

>>> a,b=os.path.splitext("c:\\dir1\\dir2\\file.txt")
>>> print a
c:\dir1\dir2\file
>>> print b
.txt
判断路径下文件存在——os.path.isfile
>>> os.path .isfile("C:\\test.txt")
True
>>> os.path .isfile("C:\\123.txt")
False
打开文件——open(‘file’[,’mode’])
>>>import os>>> os.getcwd()
'c:\\'
>>> file=open('test.txt')   #默认的mode是'r',即读模式
>>> file.read()  #读取文件内容
'hello\nworld\nhello,python'   #  \n在文件中的形式是换行

mode的选项含义如下:

模 式

描述

r

以读方式打开文件,可读取文件信息。

w

以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容;如果文件不存在则创建

a

以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建

r+

以读写方式打开文件,可对文件进行读和写操作。

w+

消除文件内容,然后以读写方式打开文件。

a+

以读写方式打开文件,并把文件指针移到文件尾。

b

以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

打开文件之后具体的文件操作类似==>>> file.read() #读取文件内容==,常见操作如下:

方法

描述

f.close()

关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。

f.name()

获取文件名称

f.next()

返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

f.fileno()

获得文件描述符,是一个数字。返回一个长整型的”文件标签“

f.flush()

刷新输出缓存,把缓冲区的内容写入硬盘

f.isatty()

如果文件是一个终端设备文件(Linux系统中),则返回True,否则返回False。

f.read([size])

读出文件,size为读取的长度,以byte为单位

f.readline([size])

读出一行信息,若定义了size,则读出 一行的一部分

f.readlines([size])

读出所有行,也就是读出整个文件的信息。(把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分)

f.seek(offset[,where])

把文件指针移动到相对于where的offset位置。where为0表示文件开始处,这是默认值 ;1表示当前位置;2表示文件结尾。(注意:如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾)

f.tell()

获得文件指针位置,标记当前位置,以文件开头为原点

f.truncate([size])

把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

f.write(string)

把string字符串写入文件,write()不会在str后加上一个换行符。

f.writelines(list)

把list中的字符串一行一行地写入文件,是连续写入文件,没有换行。

操作步骤实例:

现有一个test.txt文件,格式如下:

hello
world
hello
python

一些常见操作如下:

>>> file=open('test.txt')
>>> file.read (4)  #读取前4个字节
'hell'
>>> file.read(6)  #注意这里是在刚才读过的基础上再向后读的
'o\nworl'
>>> file.read ()  #不指定size,则读到文件结尾
'd\nhello\npython'
>>> file.read()  #再读时已是文件结尾
''
>>> file.seek(0)  #将文件位置定位到第一个字节
>>> file.readline ()  #一次读一行
'hello\n'
>>> file.readline ()
'world\n'
>>> file.seek(0)   #将文件定位到开始
>>> file.readlines ()   #读取整个文件的内容
['hello\n', 'world\n', 'hello\n', 'python']>>> file .tell() #读完之后显示seek位置,即文件的最后了27L   #以长整型表示>>> file.name   #查看文件的名称'test.txt'>>> file.close() #关闭文件
文件夹、文件删除、移动、复制操作

对文件的相关操作有时需要引入shutil模块。

>>> import shutil
>>> shutil.copyfile('test.txt','123.txt')  #参数只能是文件
>>> shutil.copy("olddir","newfileordir")    #olddir只能是文件夹,newfile可以是文件,也可以是目标目录
>>> shutil.copytree("olddir","newdir")     #olddir和newdir都只能是目录,且newdir必须不存在
>>> shutil.move("oldpos","newpos")  #移动文件或目录
>>> shutil.rmtree("dir")    #空目录、有内容的目录都可以删


>>> import os>>> os.rmdir("dir") #只能删除空目录
>>> os.remove("file") #删除文件
>>> os.rename("oldname","newname")  #文件或目录都是使用这条命令