骚操作!读取文件不再使用 with open!

python 使用 with open() as 读写文件的操作方法 这篇文章主要介绍了python 使用 with open()as 读写文件的操作代码,写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件,需要的朋友可以参考下 阅读详情

c7003146cb0550893d54650ce5111cae.png

有时我们需要把数据永久存储起来,随时使用随时读取。例如,我们通过程序建立的列表、字典等数据,当程序结束时,需要把这些数据存储到文件中,当程序再次启动时,可以把这些数据读入到程序中,避免这些数据的重新录入。

在 Python 语言中,负责文件操作的称为文件对象,文件对象不仅可以访问存储在磁盘中的文件,也可以访问网络文件。文件对象通过 open 函数得到,获取文件对象后,就可以使用文件对象提供的方法来读写文件。

但 open 函数在处理某些问题是并不是很理想,有没有其他比 open 函数更加适合读取某些特定文件呢?下面我们就一起来看看!

回顾 open 函数

对文件操作使用最频繁对函数,open()打开一个文件对象,使用 Python 内置的 open() 函数,传入文件名和模式。

file_object = open(name [, mode][, buffering])

name: 要读取的文件名称。

mode: 打开文件的模式,选填。r, r+, w, w+, a, a+使用最多。

buffering: 文件所需的缓冲区大小, 选填。0 表示无缓冲, 1 表示线路缓冲。有四种打开文件的不同方法(模式)

  • "r" - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。

  • "a" - 追加 - 打开供追加的文件,如果不存在则创建该文件。

  • "w" - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。

  • "x" - 创建 - 创建指定的文件,如果文件存在则返回错误。

此外,可以指定文件是应该作为二进制还是文本模式进行处理。

  • "t" - 文本 - 默认值。文本模式。

  • "b" - 二进制 - 二进制模式(例如图像)。

使用时常通过with open()方法读写文件。

with open("文件名.txt", "r") as fin: # fin为 别名(文件句柄对象)
  file =  fin.read() # 会一次性读取文件的全部内容
    file_line = fin.readline() # 可以每次读取一行内容
    file_lines = fin.readlines() # 一次读取所有内容并按行返回list

pathlib

以前在 Python 中操作文件路径,更多的时候是使用 os 模块。Python3 的系统标准库pathlib模块的Path对路径的操作会更简单。

pathlib的一些基本操作,如文件名操作、路径操作、文件操作等等并不在本文讨论范围。本此介绍使用率非常高的文件操作,其文件读写方法。

Path.open

在pathlib里如果要打开一个文件十分的简单。

Path.open(mode='r', 
          buffering=-1, 
          encoding=None, 
          errors=None, 
          newline=None)

打开路径指向的文件,就像内置的open()函数所做的一样。

from pathlib2 import Path
example_path = Path('./info.csv')
with example_path.open() as f:
   print(f.readline())
   print(f.read())

结果

"编号","性别","年龄","成绩"

961067,"男",23,97
969157,"男",38,98
969237,"男",27,120
970394,"男",27,118

Path读与写

对于简单的文件读写,在pathlib模块中有几个简便的方法:

  • Path.read_text(): 以字符串形式返回路径指向的文件的解码后文本内容。

  • Path.read_bytes(): 以二进制/字节模式打开路径并以字节串的形式返回内容。

  • Path.write_text(): 打开路径并向其写入字符串数据。

  • Path.write_bytes(): 以二进制/字节模式打开路径并向其写入数据。

>>> p = Path('my_binary_file')
>>> p.write_bytes(b'Binary file contents')
20
>>> p.read_bytes()
b'Binary file contents'

>>> p = Path('my_text_file')
>>> p.write_text('Text file contents')
18
>>> p.read_text()
'Text file contents'

更多详情可参见pathlib模块[1]。

fileinput

如果你只想读取一个文件,使用open()。如果需要实现文件列表的批量循环操作,不妨使用本模块。

fileinput.input

input是fileinput模块的初始接口,其使用也是较简单。

fileinput.input(files=None, 
                inplace=False, 
                backup='', 
                *, 
                mode='r', 
                openhook=None)

files 需要读取的文件对象,可迭代对象。

inplace 标准输出重定向替换,表示是否将标准输出的结果写回文件,默认不取代。

backup 读取时同时备份文件,可以指定备份的后缀名,比如 backup='.bak'。

mode 文件读取模式,fileinput 有且仅有这两种读取模式r和 rb。

  • 默认使用 mode='r'

  • 如果文件是二进制的,可以使用mode='rb' 模式。

openhook 支持用户传入自定义的对象读取方法。fileinput  内置了两个勾子函数:

  • fileinput.hook_encoded(encoding, errors=None)使用 gzip 和 bz2模块透明地打开 gzip 和 bzip2 压缩的文件

  • fileinput.hook_compressed(filename, mode)使用给定的 encoding 和 errors 来读取文件。

从标准输入中读取

若 input() 不传任何参数时,fileinput 默认会以 stdin 作为输入源。

运行stdinput.py后,在编译器中输入内容,程序会自动读取并再打印一次。

# stdinput.py
import fileinput
for line in fileinput.input():
    print(line)
>>> python stdinput.py 
>>> hello
hello
>>> python
python

从指定文件中读取

读取批量文件
import fileinput
with fileinput.input(files=('info1.csv', 'info2.csv')) as file:
    for line in file:
        print(f'{fileinput.filename()} 第{fileinput.lineno()}行: {line}', end='')

输出

info1.csv 第1行: |编号| |性别| |年龄| |成绩|  
info1.csv 第2行: 961067 |男| 23 97  
info1.csv 第3行: 969157 |男| 38 98  
info2.csv 第4行: "编号","性别","年龄","成绩"  
info2.csv 第5行: 969237,"男",27,120  
info2.csv 第6行: 970394,"男",27,118

由于 info.txt 和 info.txt 的内容被整合成一个文件对象 file ,因此 fileinput.lineno() 只有在读取一个文件时,才是原文件中真实的行号。如果想要在读取多个文件的时候,也能读取原文件的真实行号,可以使用 fileinput.filelineno() 方法。

以上几个常用对方法解释如下。

  • fileinput.filename()
    返回当前被读取的文件名。在第一行被读取之前,返回 None。

  • fileinput.lineno()
    返回已被读取的累计行号。在第一行被读取之前,返回 0。在最后一个文件的最后一行被读取之后,返回该行的行号。

  • fileinput.filelineno()
    返回当前文件中的行号。在第一行被读取之前,返回 0。在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。

读取单个文件

与批量读取文件一样,只需要在参数files中传人一个文件即可。

import fileinput
with fileinput.input(files=('info2.csv')) as file:
    for line in file:
        print(f'{fileinput.filename()} 第{fileinput.lineno()}行: {line}', end='')

输出

info2.csv 第1行: "编号","性别","年龄","成绩"
info2.csv 第2行: 969237,"男",27,120
info2.csv 第3行: 970394,"男",27,118

与 glob 配合批量读取

glob 简介

glob是 python 自带的一个操作文件的相关模块,可以对文件夹下所有文件进行遍历,并将符合匹配模式的文件名保存为一个 list 列表。

glob.glob(pathname, *, recursive=False)

返回匹配 pathname 的可能为空的路径名列表,其中的元素必须为包含路径信息的字符串。

pathname 可以是绝对路径 (如 /usr/src/Tools/sub/1.gif) 或相对路径 (如 ../../Tools/*/*.gif),并且可包含 shell 风格的通配符。

实例

一个包含以下内容的目录:文件 1.gif, 2.txt, card.gif 以及一个子目录 sub 其中只包含一个文件 3.txt。glob()将产生如下结果。请注意路径的任何开头部分都将被保留。

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']
fileinput 与 glob 配合使用
import fileinput
import glob

for line in fileinput.input(glob.glob("*.csv")):
    if fileinput.isfirstline():
        print(f'Reading {fileinput.filename()}...'.center(50,'-'))
    print(str(fileinput.filelineno()) + ': ' + line.upper(), end="")

输出

---------------Reading info1.csv...---------------
1: |编号| |性别| |年龄| |成绩|
2: 961067 |男| 23 97
3: 969157 |男| 38 98
---------------Reading info2.csv...---------------
1: "编号","性别","年龄","成绩"
2: 969237,"男",27,120
3: 970394,"男",27,118

更多使用方法请参见 fileinput 模块[2]。

codecs

常用open方法操作文件,写入str类型,不管字符串是什么编码方式,此时一般不会出现什么问题。但有时候我们爬虫或者其他方式得到一些数据写入文件时会有编码不统一的问题,或在自然语言处理过程中,使用open方法操作文件会经常出现报错,通常是编码错误。

此时如若想继续使用 open 方式打开,就需要先将输入文件decode,统一转为unicode ,再encode到目标编码方式,如gbk、utf-8等等。即

input ---> encode ---> unicode ---> output

幸运的是,可以使用 codecs.open() 代替这一繁琐操作。这种方法可以指定一个编码打开文件,读取返回的将是unicode。

codecs.open()

codecs.open(filename, 
            mode='r', 
            encoding=None, 
            errors='strict', 
            buffering=-1)

使用给定的 mode 打开已编码的文件并返回一个 StreamReaderWriter 的实例,提供透明的编码/解码。

mode参数可以是内置 open()函数所接受的任意二进制模式,默认的文件模式为 'r',表示以读取模式打开文件。'b' 会被自动添加。

encoding指定文件所要使用的编码格式。允许任何编码为字节串或从字节串解码的编码格式,而文件方法所支持的数据类型则取决于所使用的编解码器。

写入时,如果参数是unicode,则使用open()时指定的编码进行编码后写入;如果是str,则先根据源代码文件声明的字符编码,解码成unicode后再进行前述操作。

相对内置的open()来说,这个方法比较不容易在编码上出现问题,并且在速度不变的同时,还兼容open()函数所有操作命令。

应用实例

将未知编码方式的 csv 文件转为 utf-8 格式文件。

import codecs

src="......\\xxxx.csv"
dst="......\\xxx_utf8.csv"

def ReadFile(filePath):
    with codecs.open(filePath, "r") as f:
        return f.read()

def WriteFile(filePath, u, encoding="utf-8"):
    # with codecs.open(filePath,"w",encoding) as f:
    with codecs.open(filePath, "wb") as f:
        f.write(u.encode(encoding, errors="ignore"))

def CSV_2_UTF8(src, dst):
    content = ReadFile(src)
    WriteFile(dst, content, encoding="utf-8")
    
CSV_2_UTF8(src, dst)

更多相关方法可参见**codecs模块[3]**。

CSV

CSV[4] (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件。

python 内置了csv模块。常用的有四个方法:

csv.reader

csv.reader(csvfile, 
           dialect='excel', 
           **fmtparams)

返回一个 reader 对象,该对象将逐行遍历csvfile 。

svfile可以是任何对象,文件对象和列表对象均适用。如果 csvfile 是文件对象,则打开它时应使用 newline=''。

dialect用于不同的 CSV  变种的特定参数组。

fmtparams可以覆写当前变种格式中的单个格式设置。有关变种和格式设置参数的完整详细信息,请参见 变种与格式参数[5] 。

应用实例
import csv
with open('info.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile
                             , delimiter=' '
                             , quotechar='|'
                            ) 
    for row in spamreader:
        print(row)
        print(', '.join(row))

输出

['"编号","性别","年龄","成绩"']
"编号","性别","年龄","成绩"
['961067,"男","23","97"']
961067,"男","23","97"
['969157,"男","38","98"']
969157,"男","38","98"

以上用到的变种与格式参数解释如下。

delimiter一个用于分隔字段的单字符,默认为 ' , '。

quotechar一个单字符,用于包住含有特殊字符的字段,特殊字符如 定界符 或 引号字符 或 换行符。默认为 ' " '。

由于使用 open()来读取 CSV 文件,因此默认情况下,将使用系统默认编码来解码文件并转换为unicode,要使用其他编码来解码文件,可使用open的encoding参数:

import csv
with open('sample.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

csv.writer

csv.writer(csvfile, dialect='excel', **fmtparams)

返回一个 writer 对象,该对象将用户的数据在给定的文件类对象上转换为带分隔符的字符串。None 值会写入为空字符串。

写入前,所有非字符串数据都先用 str() 转化为字符串再写入。

csvfile 可以是具有 write() 方法的任何对象。

应用案例
import csv
with open('info.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_NONNUMERIC)
    spamwriter.writerow(["编号","性别","年龄","成绩"])
    spamwriter.writerow([961067,"男",23,97])
    spamwriter.writerow([969157,"男",38,98])

输出csv文件打开如下

|编号| |性别| |年龄| |成绩|
961067 |男| 23 97
969157 |男| 38 98

参数quoting说明:控制 writer 何时生成引号,以及 reader 何时识别引号。该属性可以等于任何 QUOTE_* 常量,默认为QUOTE_MINIMAL。

QUOTE_\* 常量包括:

  • csv.QUOTE_ALL 指示 writer 对象给所有字段加上引号。

  • csv.QUOTE_MINIMAL 指示 writer 对象仅为包含特殊字符(例如定界符、引号字符 或 行结束符 中的任何字符)的字段加上引号。

  • csv.QUOTE_NONNUMERIC 指示 writer 对象为所有非数字字段加上引号。指示 reader 将所有未用引号引出的字段转换为 float 类型。

  • csv.QUOTE_NONE 指示 writer 对象不使用引号引出字段。当 定界符 出现在输出数据中时,其前面应该有 转义符。如果未设置 转义符,则遇到任何需要转义的字符时,writer 都会抛出 Error 异常。指示 reader 不对引号字符进行特殊处理。

csv.DictReader

csv.DictReader(*f*, 
               *fieldnames=None*, 
               *restkey=None*, 
               *restval=None*, 
               *dialect='excel'*, **args*, ***kwds*)

创建一个对象,该对象在操作上类似于常规 reader,但是将每行中的信息映射到一个 dict,该 dict 的键由 fieldnames 可选参数给出。

fieldnames参数是一个 sequence。如果省略 **fieldnames**,则文件 f 第一行中的值将用作字段名。无论字段名是如何确定的,字典都将保留其原始顺序。

如果某一行中的字段多于字段名,则剩余数据会被放入一个列表,并与 restkey 所指定的字段名 (默认为 None) 一起保存。如果某个非空白行的字段少于字段名,则缺失的值会使用 restval 的值来填充 (默认为 None)。

应用实例
import csv
with open('info.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)

注意:

在 3.6 版更改: 返回的行现在的类型是 OrderedDict。在 3.8 版更改: 现在,返回的行是 dict类型。

python 3.6/3.7 输出:

OrderedDict([('编号', '961067'), ('性别', '男'),
             ('年龄', '23'), ('成绩', '97')])
OrderedDict([('编号', '969157'), ('性别', '男'),
             ('年龄', '38'), ('成绩', '98')])

python 3.8 输出

{'编号': '961067', '性别': '男', 
 '年龄': '23', '成绩': '97'}
{'编号': '969157', '性别': '男', 
 '年龄': '38', '成绩': '98'}
Reader 对象的一些方法
  • csvreader.line_num
    源迭代器已经读取了的行数。它与返回的记录数不同,因为记录可能跨越多行。

  • csvreader.fieldnames
    字段名称。如果在创建对象时未传入字段名称,则首次访问时或从文件中读取第一条记录时会初始化此属性。

import csv
with open('info.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    print(f'文件字段名称:{reader.fieldnames}\n')
    for row in reader:
        print(f'读取的第{reader.line_num}行.')
        print(dict(row))

输出

文件字段名称:['编号', '性别', '年龄', '成绩']

读取的第2行.
{'编号': '961067', '性别': '男', 
 '年龄': '23', '成绩': '97'}
读取的第3行.
{'编号': '969157', '性别': '男',
 '年龄': '38', '成绩': '98'}
读取的第4行.
{'编号': '969237', '性别': '男', 
 '年龄': '27', '成绩': '120'}
读取的第5行.
{'编号': '970394', '性别': '男', 
 '年龄': '27', '成绩': '118'}

csv.DictWriter

csv.DictWriter(f, fieldnames, restval='', 
               extrasaction='raise', 
               dialect='excel', *args, **kwds)

创建一个对象,该对象在操作上类似常规 writer,但会将字典映射到输出行。

fieldnames 参数是由键组成的 sequence,它指定字典中值的顺序,这些值会按指定顺序传递给 writerow() 方法并写入文件 f 。

如果字典缺少 fieldnames 中的键,则可选参数 restval 用于指定要写入的值。

如果传递给 writerow() 方法的字典的某些键在 fieldnames 中找不到,则可选参数 extrasaction 用于指定要执行的操作。如果将其设置为默认值 'raise',则会引发 ValueError。如果将其设置为 'ignore',则字典中的其他键值将被忽略。

应用案例
with open('info.csv', 'w', newline='') as csvfile:
    fieldnames = ['编号', '性别', '年龄', '成绩']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_NONNUMERIC)

    writer.writeheader()
    writer.writerow({'编号': 961067, '性别': '男', '年龄': 23, '成绩': 97})
    writer.writerow({'编号': 969157, '性别': '男', '年龄': 38, '成绩': 98})

写入的 csv 文件打开结果如下

"编号","性别","年龄","成绩"
961067,"男",23,97
969157,"男",38,98

Writer 对象的一些方法

DictWriter.writeheader()在 writer 的文件对象中,写入一行字段名称(字段名称在构造函数中指定),并根据当前设置的变种进行格式化。

csvwriter.writerow(row)将参数 row 写入 writer 的文件对象。

csvwriter.writerows(rows)将 rows (即能迭代出多个上述 row 对象的迭代器)中的所有元素写入 writer 的文件对象

更多相关方法可参见 csv模块[6]。

第三方模块

另外还有专门针对Word文件、Excel文件及PDF文件的模块,这里只简单介绍下。

word 文件

python-docx
from docx import Document
# 初始化一个实例
document = Document()
# 增加一集标题
document.add_heading('Document Title', 0)

PDF 文件

pdfplumber
# 导入pdfplumber
import pdfplumber
# 读取pdf文件,保存为pdf实例
pdf =  pdfplumber.open("D:\\demo.pdf")
# 访问第一页
first_page = pdf.pages[0]
# 自动读取表格信息,返回列表
table = first_page.extract_table()

Excel 文件

比较常用的 Excel 操作模块有如下三种。

  • xlrd 读取 .xls 和 .xlsx 文件

  • xlwings 读取 .xls 和 .xlsx 文件

  • openpyxl 读取 .xlsx 文件

xlrd

xlrd不能创建和保存Excel文件

import xlrd
# 打开Excel文件
df = xlrd.open_workbook(name)
# 查看所有sheet
df.sheet_names()
xlwings

xlwings 直接对接的是 Excel 应用程序,然后才是工作簿 books 和工作表 sheets,xlwings 需要安装有 Excel 应用程序的环境xlwings 可以读取 .xls 和 .xlsx 文件。

import xlwings as xw
# 程序可见,只打开不新建工作薄
app = xw.App(visible=True, add_book=False) 
app.display_alerts = False # 警告关闭
app.screen_updating = False # 屏幕更新关闭
# wb = app.books.open(xls_path)
wb = app.books.open(xlsx_path)
wb = app.books.add() # 创建文件
wb.save() # 保存文件
wb.close() # 关闭文件
app.quit() # 关闭程序
openpyxl

openpyxl 可以读取 .xlsx 文件,如果读取.xls 文件会报错。

import openpyxl
# 读取excel文件
wb = openpyxl.load_workbook(xlsx_path)
# 获取工作表、新工作簿中指定即创建工作表
sheet = wb.active
# 保存文件
wb.save()

另外还有很强大的pandas模块,本文不在赘述。


 

 

 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站小姐姐图片转漫画!

关于Python中with open() as操作文件的学习笔记 Python中读、写、追加的用法 ''' file1.txt 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 ''' #一个小提示:每次使用open()打开文件,指针都在开头(即:open()打开文件默认seek(0)) with open ('file1.txt','r',encoding='utf-8') as f : #用只读的方... 阅读详情

相关推荐

Spring Boot Admin 完整教程

SpringBootAdmin是一个用于管理和监控SpringBoot应用的Web工具,提供健康检查、性能指标、日志管理等核心功能。系统由AdminServer(管理服务器)和AdminClient(客户端)组成,通过Actuator端点收集数据。配置需添加Maven/Gradle依赖,通过@EnableAdminServer注解启动服务端,客户端需配置注册信息。支持UI自定义、安全认证(基本/OAuth2)、多种通知方式(邮件/Slack)及与Eureka/Consul等服务发现的集成。最佳实践包括分层监

weixin_51040479的博客 2556

python读写文件,和设置文件的字符编码比如utf-8

一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明: 第一个参数是文件名称,包括路径; 第二个参数是打开的模式mode 'r':只读(缺省。如果文件不存在,则抛出错误) 'w':只写(如果文件不存在,则自动创建文件) 'a':附加到文件末尾 'r+':读写 如果需要以二进制方式打开文件,需要在mode后面加上字符"

zyqviolet的专栏 1863

历史预测+LLM双杀!DriveGPT4-V2闭环驾驶配置避坑指南

本文深入探讨了DriveGPT4-V2在工程化部署中的核心挑战与解决方案。通过融合历史轨迹预测与大语言模型,该模型旨在实现更可靠的端到端自动驾驶。文章详细解析了从环境配置、多模态Token对齐、轻量控制头设计到训练优化与闭环仿真验证的全流程,为开发者提供了一份详实的避坑指南。

transformer2023的博客 384

Python标准库—codecs模块

codecs 常用函数 codecs.encode(obj, encoding='utf-8', errors='strict') 使用为 encoding 注册的编解码器对 obj 进行编码,类似str.encode()方法。 >>> codecs.encode("你好,world",encoding='ascii') Traceback (most recent call...

L_zzwwen的博客 4344

(04730)半导体器件之基本放大器工作原理(一)

放大器是构成各种电子线路的基本单元电路。所谓“放大”,就是将输入的微弱信号(微弱变化的电压或电流等)去控制直流电源提供的能量,并使输出按照输入的小信号变化规律而变化的过程。所以放大器的本质是能量转换器。本节重点学习基本放大电路的工作原理和基本分析方法及主要性能指标。

黄先生的博客 3006

Argoverse轨迹预测实战:从数据加载到地图API应用全解析

本文详细解析了Argoverse数据集在轨迹预测中的应用,从数据加载到地图API的实战技巧全涵盖。通过具体代码示例展示如何高效处理轨迹数据、实现可视化及基础预测模型,帮助开发者快速掌握自动驾驶轨迹预测的核心技术。特别介绍了Argoverse地图API的深度应用和性能优化经验。

weixin_29182481的博客 241

python中open()与codecs.open()的区别

最初的时候,只有open()函数,由于Python2中,编码的冗杂性,所以就有了codecs.open();至于io.open,其实是因为Python 2的open实际上是file模块提供的;而Python 3的open是io模块提供的。然后,Python 2.6引入了这个Python 3的特性,叫做io.open,以便和原来的open相区分。但是,这个Python 2.6的io.open...

白清羽的博客 8632

ESP32驱动GC9A01圆形屏实战:Arduino平台LVGL移植与图像显示优化

本文详细介绍了在Arduino平台上使用ESP32驱动GC9A01圆形屏的实战指南,包括硬件连接、LVGL移植与图像显示优化。通过SPI配置、LVGL库安装和双缓冲机制等技巧,帮助开发者快速实现高效显示效果,适用于智能家居控制面板等应用场景。

weixin_29182481的博客 735

codecs.open python另一种文件读写方式

codecs.open Python文档的解释: codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1) 使用给定的模式打开编码文件并返回StreamReaderWriter的实例,从而提供透明的编码/解码。默认文件模式是'r',这意味着以读取模式打开文件。 注意:底层编码文件始终以二进制模式...

ziskin的博客 3341

解决屏幕不亮难题:慷智SerDes DE信号极性配置避坑指南

本文深入探讨了基于慷智AIM95x系列SerDes芯片的嵌入式显示系统开发中,因DE信号极性配置不匹配导致屏幕不亮的典型故障。文章详细解析了DE信号的核心作用与极性定义,提供了慷智SerDes芯片中DE极性寄存器的具体配置方法与调试记录,并给出了从隔离问题、对比时序到波形验证的系统性排查流程,帮助工程师快速定位并解决此类隐蔽问题。

weixin_29185493的博客 141

实战指南:Qwen3-ASR-1.7B 语音识别

本文介绍了Qwen3-ASR语音识别模型的安装与使用。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1805

python中文件操作codecs.open()

python中文件操作

失眠的树的博客 1573

华为OD机试真题 新系统 2026-04-19 C语言 实现【8位LED控制器】

有一个8位LED控制器,包含8个LED灯(编号0-7),初始状态全灭,用8位二进制表示为:00000000。控制器可以接收以下三种指令: Lx:L表示点亮操作,x表示LED的编号(0一7),操作得到的结果是:点亮第x个LED灯,把状态设为1。 Dx:D表示熄灭操作,x表示LED的编号(0-7),操作得到的结果是:熄灭第x个LED灯,把状态设为0。 Tx:T表示切换操作,x表示LED的编号(0-7),操作得到的结果是:切换第x个LED灯的状态,若状态为0则变为1,为1则变为0。 现在给定一组指令字符串(0<

MISAYAONE的博客 148

python读取文件之with open()

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。 open()VS with open() 目前最常使用的是with open()函数,首先介绍它和open()的区别: open()完成后必须调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的,由于文件读写时都有可能产生IOError,一旦出错,后面的f....

Abolbee 9294

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python使用with open() as读写文件【必知必会】

前言:在前面的博文里,我介绍了Python中的文件操作,详情见:深入浅出Python——Python高级语法之文件操作,本文将主要讲解with open() as读写文件的优点与作用。 文章目录一、读文件抛出异常二、解决上述问题三、with open() as读写文件 一、读文件抛出异常 在之前的博文里,我们说到:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符: f = open('test.txt', 'r') 标示符'r'表示读文件。这样,我们就成功地打开

路虽远,行则必至! 4万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python读写文件之with open()

with open()

我是一只小嵩鼠 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

with open() as f的用法

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。Python内置了读写文件的函数,用法和C是兼容的。

biggolden1的博客 3万+

Python open和with open用法和区别

一、区别 使用open打开文件,必须要使用close关闭文件,所以,为了保证无论是否出错都能正确地关闭文件。 with open可以不用close()方法关闭文件,无论在文件使用中遇到什么问题都能安全的退出,即使发生错误,退出运行时环境时也能安全退出文件并给出报错信息。 二、open用法 三、with open用法 如果是配置文件,调用readlines()最方便: with open("test.txt","r") as file: for line in file.readlines():

yangzai_0551的博客 1万+

python按行读取文件 with open_python笔记——文件读写操作过程(open与with open的区别)...

文件的读写通常包含以下步骤:文件的打开:open()open或with open会返回文件对象,必须用read或readlines之后才能打印在此我会介绍with open 与open之间的区别。提前剧透with open优于open文件的读入:read()文件的写入:write()文件的关闭:close()另外介绍两个模块的内容:文件的定位文件的属性一、文件的打开:open与with open(...

weixin_39929377的博客 3122

Python中打开文件的方式(With open)

python文件读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件) 文章目...

一米阳光-的博客 2万+

python之文件操作进阶(with open 、文件复制、文件的读、写、关闭)(8)

本篇文章主要针对python的文件操作进行深入的理解,并掌握更多python操作文件的方法和技巧,其中基础知识我不会过多讲解,大家可以结合我前面的文章进行学习python之文件操作基础。

@优快云盲敲代码的阿豪的博客 3027

python之读取和写入文件

????python读取文件部分,一般我用的比较多的都是利用pandas库里面的read_xxx方法,对python自己内置的读取文件方法不是很了解,今天总结一下。 目录1.读取整个文件2.文件路径3.逐行读取4.写入文件5. 写入多行6.追加写入文件7. 参考资料 1.读取整个文件 我们首先有个text01.txt,我们读取整个文件,看看里面有什么内容 #读取整个文件 with open('text01.txt') as file_read: content=file_read.read()

柳小葱的博客 1万+

Python 文件操作指南:使用 open 和 with open 实现高效读写

了解如何使用 Python 进行文件的读写操作

powerbiubiu的博客 5541

python笔记——文件读写操作过程(open与with open的区别)

文件的读写通常包含以下步骤: 文件的打开:open() open或with open会返回文件对象,必须用read或readlines之后才能打印 在此我会介绍with open 与open之间的区别。提前剧透with open优于open 文件的读入:read() 文件的写入:write() 文件的关闭:close() 另外介绍两个模块的内容: 文件的定位 文件的属性 一、文件的打开:o...

阿斯达克 3364
上一篇: 锦囊秘籍!用Python操作MySQL的使用教程集锦!
下一篇: 大公司病了,这也太形象了吧!!!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值