Python 文件操作

打开文件和关闭文件

open()

f=open (' 1.txt ' , ' r ')

close()

f.close()

其他方式

可以用 with open(‘1.txt’,'r') as f 的方式打开并关闭1个文件

with open ('1.txt','r') as f

访问模式

  • r 读取文件,文件的指针将会放在文件的开头。这是默认模式。
  • w 写入文件,如果文件不存在,则新建文件,文件存在,则覆盖此文件
  • a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。
  • rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
  • wb 以二进制格式打开一个文件用于写入。存在则覆盖,不存在则新建
  • ab 以二进制格式打开一个文件用于追加。如果该文件已存在,指针在原文末尾
  • r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
  • w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖,存在则覆盖

###文件读取方式 read() 一次行读取文件所有内容,返回结果为字符串

readline() 读取文件1行内容,返回结果为字符串

readlines() 逐行读取文件所有内容,返回结果为列表

大文件读取方法

如果文件过大,防止内存吃紧,应该依次读取部分内容

可以使用如下方法,读取整个大文件

#方法1:read(n)
content  = f.read(50)
while len(content)>0:
    content  = f.read(50)

#方法2: readline()
content  = f.readline()
while len(content)>0:
    content  = f.readline()

文件指针定位

tell():查看文件位置

seek(offset, from):跳转到某一位置

  • offset:偏移量
  • from:方向
  • 0:表示文件开头(默认) seek(5)
  • 1:表示当前位置 seek(5,1)
  • 2:表示文件末尾 seek(-2,2)

文件复制

  1. 设置复制后文件名

    对原来的文件名进行切片,rindex('.')

  2. 读1行,复制1行到新的文件

代码如下:

file_name = 'filtered_words.txt'
new_name = file_name[:file_name.rindex('.')]  + '.bak' + file_name[file_name.rindex('.'):]
old_file = open(file_name,'r')
new_file = open(new_name,'w')
line = old_file.readline()
while len(line)>0:
	new_file.write(line)
	line= old_file.readline()
old_file.close()
new_file.close()

文件删除,重命名

需要导入os库

import os
os.rename('123.txt','456.txt')
os.remove('456.txt')

查看文件夹中的所有文件

os.listdir()

注意: 1. 需要导入 os模块 ( import os ) 2. 返回1个列表 如 ['1.txt','2.txt']

import os
file_names = os.listdir('./movies')
print(file_names,type(file_names))
for temp in file_names:
	print(temp,type(temp))

# 输出》》
 ['三国 - 副本 (11).txt', '三国 - 副本.txt', '三国.txt'] <class 'list'>
# 三国 - 副本 (11).txt <class 'str'> 
# 三国 - 副本.txt <class 'str'>
三国.txt <class 'str'>

创建文件夹

os.mkdir()

import os
os.mkdir('123')
# 创建123的文件夹

创建多层级文件夹

os.makedirs()

import os
os.makedirs('123/456/789')
# 创建 123/456/789 多级目录的文件夹

获取文件的路径

os.path.abspath(xxx)

import os
os.path.abspath('新建文件夹')

判断文件类型

os.path.isdir('文件夹名') 是否是文件夹

os.path.isfile('文件名') 是否是文件

os.path.isdir('新建文件夹')        # True
os.path.isfile('1.txt')             # True

文件操作和转义

  • \u 会变转义成 Unicode 字符,注意 Windows 桌面下的文件 会被转义 如 '\C:\Users\Lee\Desktop\新建文件夹 (2)' ,\User 被转义
  • 可以通过 **r'\C:\Users\Lee\Desktop\新建文件夹 (2)' ** 来防止转义
import os

# 新建文件夹 (2) 下的文件,返回1个列表
file_names = os.listdir('../新建文件夹 (2)')
for file_name in file_names:
    if not os.path.isdir(file_name):
        print('根目录下的文件:' + os.path.abspath(file_name))
    else:
        print('根目录下的文件夹:' + os.path.abspath(file_name))
        file_dir = '\\' + os.path.abspath(file_name)            # 防转义'\\C:\\Users\\Lee\\Desktop\\新建文件夹 (2)\\1'
        file_dir = file_dir.lstrip('\\')                        # 去掉最左边的 \\
        k = os.listdir(file_dir)
        for row in k:
            print('子目录下的文件:' + row)

转载于:https://my.oschina.net/esdn/blog/890057

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值