Python open with as---文件处理

持续更新中

该python学习专栏仅仅用于记录个人在python学习过程中遇到的一些语法和问题,不包括详细的python语法知识。对于python初学者友好。

一、文件读取

1、open()

这种方法是创建文件对象的传统方法,虽然也没有什么问题,但是它使文件对象一直处于打开状态,直到使用 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']

2、with as

这种语法在 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)  # 将一系列字符串写入一个文件

三、创建新的文件并写入数据

创建一个csv文件

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)  # 将一系列字符串写入一个文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为城w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值