python文件操作

#1.找出文件中最长的英语单词

with open('d:\\test.txt','r',encoding='utf-8') as f:

    text = f.read()

    print('orignaltext=\n' + text)

    text = text.replace('.', '').replace(',', '').replace(';', '').replace('!', '')

    words = text.split()

    longest_word = ''

    for word in words:

        if len(word) > len(longest_word):

            longest_word = word

    print('longest word is \n ' + longest_word)

with open(文件名字,读写方式,encoding = 'utf-8'):

    word=''

#2.将字符串列表写入文件

word_list = ["good",'morning','my','friend']

with open('d:\\test.test.txt','w+',encoding = 'utf-8') as f:

    for word in word_list:

        f.write(word)

常见方法

方法名称    作用

os.getcwd() 得到当前工作目录,即当前Python脚本工作的目录路径

os.listdir(path)    返回指定目录下的所有文件和目录名,返回的是列表类型

os.remove(path) 用来删除指定目录下的文件

os.chdir(dirname)   改变工作目录到dirname

os.path.abspath(name)   获得文件所在绝对路径

os.path.dirname(path)   返回文件所在路径

os.mkdir(path)  创建目录(只能创建一级目录)

os.makedirs(path)   创建多层目录

os.path.exists(path)     判断一个目录是否存在

绝对路径表示方法:

方法一:'c:\\path\\data.txt',利用转义字符指定路径。由于“\”需要转义,所以,这里要写两个“\\”。

方法二:r'c:\path\data.txt',利用“r”将路径申明为原始字符串。

方法三: 'c:/path/data.txt',利用斜杠“/”来表示,此时不需要进行转义。

希望在D盘创建目录:D:\456\123。说明,D盘事先不存在文件夹“456”。

> import os

> os.makedirs(r'd:\456\123')

方法名称    作用

读取文件

read([size])    一次性读取所有或指定(大小为size)的字符(或字节)信息,若读取文件中所有的内容,则文件指针定位到文件尾

readlines([size])   读取size行内容到列表;省略size,一次性读取文件中所有行的内容到列表,并且文件指针定位到了文件尾

readline([size])    一次读取文件一行的前size个字符或字节;省略size,一次性读取文件一行的所有内容

write(s)    向文件写入一个字符串或字节流

writelines(lines)   将lines写入文件,lines为列表,且其中每个元素均为字符串

seek(offset)    改变当前文件操作指针的位置到offset,注意:位置的指定与编码密切相关

close() 关闭文件,同时输出缓存到磁盘,完成将写入文件的操作,真实的写入到具体的文件中

flush() 不关闭文件情况下输出缓存到磁盘,完成文件内容的写入

输出指定路径下的所有文件(不包括子文件夹下的文件)。

其基本思路:先列出指定目录下所有的文件夹和文件,然后逐个判断是否为文件,是则打印输出。看下面的代码:

import os

rootdir = 'd:\PythonTest'

ls = os.listdir(rootdir)  #列出文件夹下所有的目录与文件

for i in range(0,len(ls)):

     path = os.path.join(rootdir, ls[i])  #结合os.path.join()方法还原完整路径

     if os.path.isfile(path):  #只打印输出文件名

          print(path)

方法名称    描述

os.sep  返回路径的分隔符“\\”到一个字符串中

os.listdir(path)    返回指定路径下所有的文件夹名和文件名到一个列表中

os.walk( )  该函数创建一个生成器对象来遍历整棵目录树

os.path.join(path1[, path2[, ...]]) 把目录和文件名合成一个路径

os.path.abspath(path)   返回绝对路径

os.path.basename(path)  返回文件名

os.path.dirname(path)   返回文件路径

os.path.exists(path)    路径存在则返回True,否则返回False

os.path.getatime(path)  返回最后一次进入此路径path的时间

os.path.getmtime(path)  返回在此路径path下最后一次修改的时间

os.path.getsize(path)   返回文件大小,如果文件不存在就返回错误

os.path.isabs(path) 判断是否为绝对路径

os.path.isfile(path)    判断路径是否为文件

os.path.isdir(path) 判断路径是否为目录

os.path.samefile(path1, path2)  判断目录或文件是否相同

os.path.sameopenfile(fp1, fp2)  判断fp1和fp2是否指向同一文件

os.path.split(path) 把路径分割成dirname和basename,返回一个元组

os.path.splitdrive(path)    一般用在windows下,返回驱动器名和路径组成的元组

os.path.splitext(path)  分割路径,返回路径名和文件扩展名的元组。如果是一个不带文件扩展名的路径,则返回的元组中的第2个元素为空串

接下来详细介绍walk:

测试os.walk()输出的是一个generator,并且该generator的每个元素是一个含三个元素的元组。

元组的第1个元素是一个字符串,第2、3个元素都是一个list。

第一个元素是当前路径,第二个是当前目录下所有的文件夹,第三个是可以直接访问的文件

walk()方法语法格式如下:

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

各参数的含义如下:

top -- 指定遍历的目录, 返回的是一个三元组(root,dirs,files),但请注意,不是说返回的是一个含三个元素的元组,返回的不是元组,而是一个generator(生成器),该生成器的每个元素是一个含三个元素的元组。

root --当前正在遍历的目录,是一个字符串。

dirs --是一个list ,指定目录下所有的文件夹名(但不包括子文件夹名)。

files --同样是 list , 指定目录下的所有文件名(但不包括子文件夹下的文件)。注意,这些文件名不包含路径信息,如果需要得到完整的路径信息,需要使用 os.path.join(str_dirpath, list_filenames)进行连接。

topdown--可选,为True,先遍历top目录,否则优先遍历top的子目录(默认为开启)。如果 topdown 参数为True,walk 会遍历top文件夹,与top文件夹中每一个子目录。

onerror--可选,默认值是”None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

followlinks -- 可选,如果为True,则会遍历目录下的快捷方式。

例:

【例】输出指定路径下包括子文件夹下的所有文件。

#遍历输出指定路径下所有文件的文件名,包括子目录名

import os

def traverse(rootdir):

      for root, dirs, files in os.walk(rootdir):

           for file in files:  

                #结合os.path.join()方法还原完整路径

                print(os.path.join(root, file))

           for dir in dirs:  

                traverse(dir)

rootdir = 'd:\PythonTest'

traverse(rootdir)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值