Python期末复习:文件读取操作

文件中的内容
abcd
1234
5678

Open返回一个文件对象

with open('out.txt', 'r') as file:

 read(),readline(),readlines()

read():读取全部的文件内容,然会一个字符串,这个字符串是包括换行符的

with open('out.txt', 'r') as file:
    content = file.read()
    print(content)
    

abcd
1234
5678

也可以指定读取的个数:(这里注意换行符也会被读取)

with open('out.txt', 'r') as file:
    content = file.read(10)
    print(content)

abcd
1234

 readlines():读取每一行,保存在一个列表中,这里会有换行符\n,所以要用strip将换行符去除

with open('out.txt', 'r') as file:
    content = file.readlines()
    res = []
    for i in content:
        res.append(i.strip())
    print(res)


['abcd', '1234', '5678']

readline():读取一行,输出为一个字符串,并且有换行符

with open('out.txt', 'r') as file:
    content = file.readline()
    print(content)

abcd

注意 :这里面的读取都是连续的,比如说用了readlines之后再readline就是为空了

write(all_text)和writelines(list)

write(all_text)是将里面的string类型的文本写入

writelines(list)是将列表里面的所有写入

总结:

两个的区别传入的类型不一样,并且两个都不会自动换行

OS模块

os.mkdir(path):创建新目录,path为一个字符串,表示新目录路径。相当于$mkdir命令

os.rmdir(path):删除空目录,path为一个字符串,表示要删除的目录路径。相当于$rmdir命令

os.listdir(path):返回目录中所有文件。相当于$ls命令。 os.remove(path):删除path指向的文件。

os.remove(path):删除path指向的文件。 

os.rename(src, dst):重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。

os.chmod(path, mode):改变path指向的文件的权限。相当于$chmod命令。

os.getcwd():查询当前工作路径 (cwd, current working directory),相当于$pwd命令。

os.chdir(path):改变当前工作目录 os.system():执行shell命令 

os.system():执行shell命令

OS.path模块(主要用于文件属性的获取)

os.path.dirname(__file__):返回当前python执行脚本的执行路径(看下面的例子),这里__file__为固定参数

os.path.abspath(file):返回一个文件在当前环境中的绝对路径,这里file 一参数

os.path.join(basedir,file): 将file文件的路径设置为basedir所在的路径,这里fbasedir和file都为参数

os.path.split(path):函数返回一个路径的目录名和文件名

os.path.isfile(path)和os.path.isdir(path)函数分别检验给出的路径是一个文件还是目录。

os.path.exists(path):用来检验给出的路径是否真地存在

os.path.basename(path):返回路径path中的文件名

os.path.dirname(path):返回path中的文件夹路径

os.path.splitext():分离文件名与扩展名

os.path.getsize(name):获得文件大小,如果name是目录返回0L

import os

path1 = os.path.dirname(__file__)
path2 = os.path.join(path1, 'out.txt')
path3 = os.path.split(path2)
print(os.path.getsize(path2))
print(os.path.splitext(path2))
print(os.path.basename(path2))
print(os.path.split(path2))

76
('D:\\temp\\Python期末复习\\out', '.txt')
out.txt
('D:\\temp\\Python期末复习', 'out.txt')

进程已结束,退出代码0

Shutil模块

 shutil.copy(file_path, dir_path) #从左往右拷贝,如果已经存在就直接覆盖

shutil.move(file_path, dir_path) # 移动到另外一个文件夹中

shutil.move(file_path, new_file_path) # 重命名为新的绝对路径

shutil.copytree(file_path, dir_path) # 拷贝所有文件到新的文件夹下,保持原有

shutil.rmtree(dir_path) # 删除此路径的文件夹

shutil模块的压缩与解压

压缩文件: shutil.make_archive(base_name, ‘zip', root_dir, [base_dir])

base_name : 创建的目标文件名,包括路径,减去任何特定格式的扩展。

format : 压缩包格式。”zip”, “tar”, “bztar”或”gztar”中的一个。

root_dir : 需要打包的文件夹路径。打包完成时存储在上一级目录。

base_dir : 使用后会将base_dir作为路径,解压后有个有层级的文件夹,而仅非只有单独的打包内容。

import shutil

# 创建 ZIP 文件
shutil.make_archive('/path/to/archive_name', 'zip', '/path/to/dir', 'folder')

base_name 是 /path/to/archive_name,表示压缩文件的名称是 archive_name.zip。
format 是 'zip',表示压缩文件的格式是 ZIP。
root_dir 是 /path/to/dir,表示要压缩的根目录。
base_dir 是 folder,表示要压缩的目录是 /path/to/dir/folder。

最终生成的压缩文件路径是 /path/to/archive_name.zip,它包含 folder 目录及其内容

解压文件:

shutil.unpack_archive(filename[, extract_dir[, format]])

filename是压缩文档的完整路径

extract_dir是解压缩路径,默认为当前目录。 format是压缩格式。默认使用文件后缀名代码的压缩格式。"zip", "tar", "bztar"或"gztar"中的一个。

import shutil

# 解压缩 zip 文件
shutil.unpack_archive('example.zip', 'extracted_files')

# 解压缩 tar 文件
shutil.unpack_archive('example.tar.gz', 'extracted_files', 'gztar')

# 不指定格式进行解压缩(根据文件扩展名推测)
shutil.unpack_archive('example.zip', 'extracted_files')

pickle模块用于数据的永久存储
 

主要是序列化和反序列化

dumps(obj):将 python 对象序列封装成二进制对象,并返回;

loads(bytes_obj):读取给定的二进制对象数据,并将其转换为 Python对象。

import pickle

# 假设我们有一个序列化后的字节数据
serialized_data = b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x05\x00\x00\x00Aliceq\x02X\x03\x00\x00\x00ageq\x03K\x1eu.'

data = pickle.loads(serialized_data)

print(data)

dump(obj, file, protocol=None):将 Python 中的对象序列obj转化成二进制对象,并写入文件file。

load(file):读取指定的序列化数据文件file,并返回原先永久存储的python对象

import pickle

# 假设我们有一个已保存的对象文件 'data.pkl'
with open('data.pkl', 'rb') as file:
    data = pickle.load(file)

print(data)

load和loads的区别就在于传入的参数不一样:

一个是传入pickle类型的文件

一个是传入二进制数据流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值