文章目录

  • 1. 文件概述
  • 2. txt文件
  • 2.1 打开文件
  • 2.2 设置工作路径
  • 2.3 创建含有文件数据的列表
  • 2.4 写入.txt文件



1. 文件概述

  • 文件是指记录在存储介质上的一组相关信息的集合
  • 文件类型
  • 文件扩展名

python中用到txt文档 python 往txt里写东西_字符串

2. txt文件

  • 以读文件的方式打开一个文件对象,可以使用内置函数open函数传入文件名称与标识符
  • 标识符可指定文件打开模式为
  • 读取模式®
  • 写入模式(w)
  • 附加模式(a)
  • 读写模式(r+)

2.1 打开文件

f = open('e_1.txt', 'r')    # 如果不存在或找不到该文件,会出现FileNotFoundError错误
f = open('digit_1.txt', 'r')
txt = f.read()  # 一次性读取所有内容,存到内存中
print(txt)
f.close()       # 文件使用完毕必须关闭,会占用操作系统资源
  • 在文件读取过程中,一旦程序抛出IOError错误,后面的close函数将不会被调用
  • 在程序运行过程中,无论是否出错,都要确保正常关闭文件
  • try…finally…结构
try:
    f = open('digit_1.txt', 'r')
    print(f.read())
finally:
    if f:
        f.close()   # 最终都会调用这个关闭
  • with语句读取文件
with open('digit_1.txt', 'r') as f:
    print(f.read())     # 结束后自动调用close()

2.2 设置工作路径

  • 需要打开不在程序文件所属目录下的文件,程序里就需要提供文件所在路径
  • 相对文件路径
  • 同目录下的文件夹,Linux和mac是用/,Windows是用\或者r
with open('text_file/e_2.txt', 'r') as f:
    print(f.read())
  • 绝对文件路径
with open('/Users/csjjli/Desktop/text_f/e_3.txt', 'r') as f:
    print(f.read())

2.3 创建含有文件数据的列表

  • 读取文件时,检查每一行,查找特定信息,修改文件中文本,可以对文件对象用for循环
  • 如果需要消除换行符,使用rstrip函数删除string字符串末尾的指定字符(默认为空格或换行符)
  • rstrip函数:删除字符串末尾的指定字符
  • lstrip函数:删除字符前面的指定字符
  • strip函数:删除字符串首尾两端的指定字符
file_name = 'digit_1.txt'
with open(file_name,'r') as f:
    for line_t in f:
        print(line_t)   # 会有空行,因为文件中的末尾有看不见的\n
  • read函数可以读取整个文件的内容,读取的内容将存储到一个字符串的变量中
file_name = 'digit_1.txt'
with open(file_name, 'r') as f:
    txts = f.read()
print(type(txts))  # str
  • readlines函数可以按行读取整个文件的内容,然后将读取的内容存储到一个列表里面
file_name = 'digit_1.txt'
with open(file_name, 'r') as f:
    txts = f.readlines()
print(type(txts))   # list
print(txts)         # 列表中的每个元素是字符串,换行符也在字符串里面
  • 正常打印
file_name = 'digit_1.txt'
with open(file_name, 'r') as f:
    txts = f.readlines()
for txt in txts:
    print(txt.strip())  # 移除了换行符
  • readline函数可以实现每次读取文件的一行,将读取到的一行存储到一个字符串变量中,返回字符串类型
file_name = 'digit_1.txt'
with open(file_name, 'r') as f:
    txt = f.readline()  # 只读取了一行
print(type(txt))
print(txt)

2.4 写入.txt文件

  • 如果要写入的文件不存在,open函数将自动创建文件
  • 如果文件已经存在,以写入模式写入文件时就会先清空该文件
file_name = 'words.txt'
f = open(file_name,'w')
f.write('Hello, world!')
f.close()   # 关闭后才算真正写入
  • 如果需要将数值型数据写入文本文件,必须先用str函数将数值型数据转换为字符串格式
file_name = 'data.txt'
f = open(file_name, 'w')
data = list(range(1, 11))
f.write(str(data))
f.close()  # [1, 2, ...]
  • 需要注意的是,当写入多行数据的时候,write函数不会自动添加换行符号,此时会出现几行数据挤在一起的情况
  • 将行与行数据进行区分,需要在write语句内添加换行符号(\n)
file_name = 'words.txt'
f = open(file_name,'w')
f.write("Hello, world!\n")
f.write("I love Python!\n")
f.close()
  • 只有调用close函数,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close函数的后果可能是数据只写了一部分到磁盘,剩下的丢失了
  • 所以用with语句更为保险
  • 使用with语句写入.txt文件
  • 要写入特定编码的文本文件,需要给open函数传入encoding参数,将字符串自动转换成指定编码
  • open函数默认encoding参数为UTF-8,其他编码需要传入encoding参数
file_name = 'words.txt'
f = open(file_name, 'w', encoding='gbk')
f.write('hello world')
  • 对文件添加内容
  • 给文件添加内容但不覆盖文件原内容,则需以附加模式(a)打开文件。此时写入的内容会附加到文件末尾,而不会覆盖原内容
  • writelines函数可以把列表中的字符串写入文件
  • 注意是连续写入文件,没有换行
  • print函数不仅能够将信息输出到屏幕上,还可以通过传参的方式让print函数将信息输出到文件中
  • print的完整格式
  • print(objects, sep, end, file, flush)
  • objects就是我们平时所需要输出的那些内容,后面4个为关键字参数
  • sep关键字参数:在输出的字符串之间插入指定字符串,默认是空格
print("a", "b", "c")            # a b c
print("a", "b", "c", sep="**")  # a**b**c
  • end关键字参数:在print输出语句的结尾加上指定字符串,默认是换行(\n),而如果不想换行,则end=’’
  • 注意:若不换行,则print语句不会马上打印出当前需要打印的信息,直到需要换行打印的时候才会将这一行信息全部打印出来
  • file参数:用于将文本输入到某些对象中,可以是文件,也可以是数据流等等,默认是输出到屏幕,即sys.stdout
f = open("words.txt", 'r + ')   # 写到前面并且等长度替换原有内容
print("a", file=f)              # 将a输出到文件中
f.close()
  • flush参数:值只能为True或False,默认为False,表示是否立刻将输出语句输入到参数file指向的对象中
  • False表示在执行f.close()之前,内容不会马上写入到文件中