编程语言
首页 > 编程语言> > [Python学习笔记]Python基础-14 文件操作

[Python学习笔记]Python基础-14 文件操作

作者:互联网

打开文件

文件路径

文件的打开方式

文件的读取方式

# 按行循环读取某个文件

file = open('xxx.xx','rb',encoding='utf8')
while True:
    contect = file.read(1024)
    if not contect:
        break
    print(contect)

file.close()

实现文件拷贝功能

import os
# 实现文件复制功能
#  获取文件名
file_name = input('请输入一个文件名:')

# 判断文件是否存在
if os.path.isfile(file_name):
    # 读取旧文件
    old_file = open(file_name,'rb')
    
    # 读取旧文件的数据到新文件中
    #  生成新文件名称
    name_cut = os.path.splitext(file_name)
    new_file_name = name_cut[0] + '.bak' + name_cut[1]
    print(new_file_name)
    new_file = open(new_file_name,'wb')

    # 将旧文件的数据写入到新文件
    new_file.write(old_file.read())

    # 关闭打开的文件
    new_file.close()
    old_file.close()
else:
    print('该文件不存在')

csv文件的读写

csv文件的写入方法

import csv

file = open('damo.csv','w',encoding='utf8',newline='')

# 写文件采用csv.write方法
# writerows
# writerow
w = csv.writer(file)
w.writerow(['name','age','soure','city'])
w.writerow(['zhangsan','19','90','杭州'])

w.writerows(
    [
        ['name','age','soure','city'],
        ['zhangsan','19','90','杭州']
    ]
)

file.close()

csv文件的读取方法

import csv

file = open('damo.csv','r',encoding='utf8',newline='')

# 读取方法,csv.reader
r = csv.reader(file)
print(r)
for data in r:
    print(data)

file.close()

将数据写入到内存中

StringIO的使用

# 将数据写入到内存中 涉及到 StringIO和BytesIO两个类
from io import StringIO

s_io = StringIO()
s_io.write("hello")
s_io.write('good')
print(s_io.getvalue())

将数据临时保存在内存中,如果程序结束,则内存中的值就不存在了

# 使用print函数的file方法,指定将打印的内容保存到内存中
from io import StringIO

s_io = StringIO()
print('hello',file=s_io)
print('ok',file=s_io)
print('good',file=s_io)

print(s_io.getvalue())

# hello
# ok
# good

BytrsIO的使用

from io import BytesIO

b_io = BytesIO()
b_io.write('你好'.encode("utf8"))
print(b_io.getvalue().decode('utf8'))

b_io.close()

标准输入/标准输出/错误输出

import sys

# input实际上就是读取了stdin
s_in = sys.stdin

while True:
    content = s_in.readline().rstrip('\n')
    if content == '':
        break
    print(content)

# stdin和stdout默认都是标准控制台
# stdout可以指定标准输出位置
# stderr可以指定错误输出位置
sys.stdout = open('stdout.txt','w',encoding='utf8')
print('hello')

sys.stderr = open('stderr.txt','w',encoding='utf8')
print(1/0)

序列化和反序列化

json字符串的使用

names = ['zhangsan','lisi','wangwu','jack']
#转换为json后,该列表应该为  '["zhangsan","lisi","wangwu","jack"]'

方法1:

import json

file = open('names.txt','w',encoding='utf8')
names = ['zhangsan','lisi','wangwu','jack']
x = json.dumps(names)  # dumps的作用,是将数据转换为字符串
print(x)

file.write(x)
file.close()

方法2:

import json

file = open('names.txt','w',encoding='utf8')
names = ['zhangsan','lisi','wangwu','jack']
json.dump(names,file)
file.close()

方法1

import json

x = '{"name":"zhangsan","age":"18"}'
p = json.loads(x)
print(p)  # 转换成一个字典 {'name': 'zhangsan', 'age': '18'}

方法2

import json

# load 读取一个文件,并把文件中的json字符串加载成为一个对象
file1 = open('names.txt','r',encoding='utf8')
y = json.load(file1)
print(y)  # ['zhangsan', 'lisi', 'wangwu', 'jack']
print(y[1])  # lisi
file1.close()

pickle模块的使用

import pickle

names = ['zhangsan','lisi','jack','herry']

# 方法1:dumps
b_name = pickle.dumps(names) 
file = open('names.txt','wb')
file.write(b_name)  # 以二进制的方式写入,文件无法读取
file.close()

# 方法1:loads
file1 = open('names.txt','rb')
x = file1.read()
y = pickle.loads(x)
print(y)
file1.close()

# 方法2:dump
file2 = open('names.txt','wb')
pickle.dump(names,file2)
file2.close()

# 方法2:load
file3 = open('names.txt','rb')
y = pickle.load(file3)
print(y)
file3.close()
import pickle

class Dog(object):
    def __init__(self,name,age) -> None:
        self.name = name 
        self.age = age
    
    def eat(self):
        print(self.name + '正在吃东西')

d = Dog('大黄','4')

# 将d保存到文件中
pickle.dump(d,open('dog.txt','wb'))

# 从文件中读取保存的类
testdog = pickle.load(open('dog.txt','rb'))
testdog.eat()
print(testdog.name,testdog.age)

json和pickle的区别

异常处理

try except语句
如果程序出错,会立刻跳转到except语句,出错语句之后的语句不会执行
如果程序不出错,则会执行else语句中的代码

def chu(a,b):
    return a/b

try:
    x = chu(5,0)
except Exception as e:
    print('程序出错了')
else:
    print('程序的结果是 ',x)

except语句

try:
  pass  # 尝试运行XXX代码,如果出错,立刻跳转到except语句
except Exception as e:  # 此处except后可以跟需要处理的错误类型
  pass  # 出错之后运行的代码
else:
  pass  # 如果没有出错,执行的代码

标签:文件,14,Python,笔记,json,file,print,open,name
来源: https://www.cnblogs.com/Lz-heng/p/16595191.html