该python学习专栏仅仅用于记录个人在python学习过程中遇到的一些语法和问题,不包括详细的python语法知识。对于python初学者友好。
这种方法是创建文件对象的传统方法,虽然也没有什么问题,但是它使文件对象一直处于打开状态,直到使用 close 函数明确地关闭或直到脚本结束,不够清晰,还被证明在更复杂的脚本中会导致错误。
1、使用sys,argv[]读取传递给python脚本的命令行参数,argv[0]是脚本所在的相对路径,argv[1]是命令行产地给脚本的第一个附加参数,以此类推。
# script_path = /opt/python/scripts/
# script_name = read_file.py
# file_path = /opt/python/files/
# file_name = file.txt
import sys
dir1 = sys.argv[0]
dir2 = sys.argv[1]
print(dir1,'\n',dir2)
# 在终端执行命令
>python3 /opt/python/scripts/read_file.py /opt/python/files/file.txt
>/opt/python/scripts/read_file.py # dir1
>/opt/python/files/file.txt # dir2
2、读取文件数据open()
2.1 打开文件
f = open(file=file_path,mode=open_mode)
例:
#两种方法均可
f = open('read.txt','r')
f = open(file='read.txt', mode='r')
open_mode Meaning
--------- ---------------------------------------------------------------
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
2.2 读取文件中的数据
文件内容:read.txt
I’m
already
much
better
at
Python
# 输出文件内容的几种方式
# 方式一 输出全部内容1
f = open(file='read.txt', mode='r')
for row in f:
print(row.strip())
f.close()
# 方式二 输出全部内容2
f1=f.read()
print(f1)
# 方式三 按行读取内容,包含最后的换行符“\n
f2 = f.readline(size:int -1)
# size 为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。
# 方式四 读取文件中的所有行,包含最后的换行符“\n
f3 = f.readlines()
#它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。
#f3 output:["I'm\n", 'already\n', 'much\n', 'better\n', 'at\n', 'Python']
这种语法在 with 语句结束时会自动关闭文件,其基本语法格式:
with 表达式 [as target]:
代码块
用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,类似于open中的变量名f。
# 除了打开文件的方式不一样以外,其他用法同open一致,且不用调用close()函数来关闭f对象
with open('read.txt', 'r') as f:
for row in f:
print(row.strip())
open_mode:
“w”:在将文本插入当前文件流位置(默认为 0)之前,将清空文件。
“a”:文本将插入当前文件流的位置,默认情况下插入文件的末尾。
string = "I'm happy\n"
strings = ['hello\n', 'today\n', 'sunny']
with open('read.txt', 'w') as f: #将会清空文件read.txt
f.write(string) # 将单个字符串写入一个文件,
f.writelines(strings) # 将一系列字符串写入一个文件
with open('read.txt', 'a') as f: #在read.txt末尾追加新的字符串
f.write(string) # 将单个字符串写入一个文件,
f.writelines(strings) # 将一系列字符串写入一个文件
string = "I'm happy\n"
strings = ['hello\n', 'today\n', 'sunny\n']
with open('read.csv', 'x') as f: # 将会清空文件read.txt
f.write(string) # 将单个字符串写入一个文件,
f.writelines(strings) # 将一系列字符串写入一个文件