open函数打开文件,将返回值放入一个变量,例如 f
- 用f.write函数写入文件
- 用f.readlines()函数读取全部文件内容
- 用f.readline()函数读取文件一行
- 用f.close()函数关闭文件
- 用f.read()读取全部文件内容。返回一个字符串,包含文件全部内容
创建文件并写入内容
a = open("c:\\tmp\\t.txt","w")
#文件夹c:\tmp 必须事先存在,open不会创建文件夹
#"w"表示写入,用此种方式打开文件,若文件本来存在,就会被覆盖
a.write("good\n")
a.write("好啊\n")
a.close()
运行后文件 c:\tmp\t.txt 内容:
good
好啊
读取现有文件:
f = open("c:\\tmp\\t.txt","r") #"r"表示读取
lines = f.readlines() #每一行都带结尾的换行符"\n"
f.close() #lines是个字符串列表,每个元素是一行
for x in lines:
print(x,end="")
输出:
good
好啊
#不用readlines也行
f = open("c:\\tmp\\t.txt","r",encoding="utf-8")
for x in f:
print(x,end="")
f.close()
文件打开模式:
"r" : 文本文件读
"rb": 二进制文件读
"w" :文本文件写
"wb" :二进制文件写
"r+": 文本文件既读又写
"rb+": 二进制文件既读又写
文本文件的编码
常见编码有 gbk和utf-8两种。打开文件时如果编码不对,则不能正确读取文件
ANSI对应 gbk
写入文件时,如果不
指定编码,则用操作
系统的缺省编码
Windows: gbk,可能
从win10开始是 utf-8
Linux,MacOs: utf-8
python程序的编码
.py文件必须存成utf-8格式,才能运行
如果存成 ansi格式,则应该在文件开头写:
#coding=gbk
创建文件和读取文件时都可以指定编码
outfile = open("c:\\tmp\\t.txt","w",encoding="utf-8")
#若打开文件用于写入时不指定编码,则使用系统缺省编码,win10下也可能是Ansi(gbk)
infile = open("c:\\tmp\\t.txt","r",encoding="utf-8")
路径
相对路径
相对路径形式: 文件名没有包含盘符
open("readme.txt","r")
文件在当前文件夹(当前路径)下
open("tmp/readme.txt","r") "/" 写成 "\\"效果也一样
文件在当前文件夹下的tmp文件夹里面
open("tmp/test/readme.txt","r")
文件在当前文件夹下的tmp文件夹里面的test文件夹下面
open("../readme.txt","r")
文件在当前文件夹的上一层文件夹里面
open("../../readme.txt","r")
文件在当前文件夹的上两层文件夹里面
open("../tmp2/test/readme.txt","r")
文件在当前文件夹的上一层的tmp2文件夹的test文件夹里面
tmp2和当前文件夹是平级的
open("/tmp3/test/readme.txt","r")
文件在当前盘符的根文件夹下的tmp3/test/里面
绝对路径形式: 文件名包含盘符
open("d:/tmp/test/readme.txt" ,"r")
程序可以获取当前文件夹:
import os
print(os.getcwd()) #os.getcdw()获取当前文件夹