記事のディレクトリ
ファイル
- ファイル操作は、
読み取りおよび書き込み操作をディスク上のデータである-派生技術IO操作が
読み書き動作:読み取り、書き込み
Q:IO操作は何ですか?
I -バイトのInputStream入力ストリーム
O -バイトのOutputStreamの出力ストリーム
- ファイルを開きます
#创建一个demo.txt
file_name='demo.txt'
file_obj=open(file_name)
#r表示的是原始字符串,以下为绝对路径写法规范
file_name = r'C:\Users\lilichao\Desktop\hello.txt'
- オープン()函数
オープン(ファイル、モード= R ''、緩衝= -1、エンコーディング=なし、エラー=なし、改行=なし、closefd =真、オープナ=なし)
モードは次の値があります。
- ファイルの内容を読みます
file_name='demo.txt'
#第一步:打开文件
file_obj=open(file_name)
#第二步,通过read,将磁盘数据写到服务器/控制台
content=file_obj.read()
print(content)
#第三步,close关闭文件
file_obj.close()
Q:IO操作した場合、IOは、何が起こるか近くにいないのですか?
A:あなたはIOを閉じていない場合は、間違いなく、データ漏洩につながるが、データが安全ではありません
Q:JDBC説明
A:閉じる4回:コレクション、声明、結果セット、Class.forNameの ... オープン4回:( Javaで書かれたので悪いです)?解決方法
大学:パッケージDBUtils使う
企業:C3PO、JNDI、データソース、MyBatisのの
使用リソースより多くのリソースIO操作は確かにリークされません、サーバーは高速、高パフォーマンス、セキュリティを読み込み、
解决在Python里面必须频繁close的方法
利用with…as…
with open(file_name) as file_obj:
print(file_obj.read)
此操作通过with…as…就可以在程序执行完成之后自动关闭IO操作.安全,高效.
程序读取不到文件的情况属于什么?
- 程序在读取过程中,肯定有找不到的情况 – FindNotFileexception
- 变量没有赋值–因为IO操作里面有很多不可控制的因素
try:
file_obj=open(file_name)
content=file_obj.read()
print(content)
except FindNotFoundError:
#肯定有文件读取不到的时候,需要抛异常,捕获异常,让程序变得更加安全
print('出错了')
- 文件读取中的处理
Python或者其他语言都是机器码,对中文不是很敏感,需要手动处理
调用open()来打开一个文件,可以将文件分成两种类型
一种,是纯文本文件(使用utf-8等编码编写的文本文件)
一种,是二进制文件(图片、mp3、ppt等这些文件)
出现乱码/中文不识别的原因:open()打开文件时,默认是以文本文件的形式打开的,但是open()默认的编码encoding为None,所以处理文本文件时,必须要指定文件的编码
#创建一个中文文档
file_name='demo2.txt'
try:
file_obj=open(file_name,encoding='utf-8')#转码
content=file_obj.read()
print(content)
except FindNotFoundError:
print('文件不存在')
-read函数可以将一个文件里面的全部文件全部读取,当有海量数据时,read函数不能使用,如果强制使用read读取海量数据,会发生一下结构:
1. 数据发生阻塞
2. 数据发生泄漏
3. 损失数据的完整,违背数据事物的原子性,离子性等
read()可以接收一个size作为参数,该参数用来指定要读取的字符的数量
默认值为-1,它会读取文件中的所有字符,
可以为size指定一个值,这样read()会读取指定数量的字符,每一次读取都是从上次读取到位置开始读取的
如果字符的数量小于size,则会读取剩余所有的,如果已经读取到了文件的最后了,则会返回’'空串
content = file_obj.read(-1)
- readlineの()
この方法は、行ずつを読み取るために使用され、それはリストにパッケージを返すために一度に読み込みます
)(含有量= file_obj.readline
file_name = 'demo.txt'
with open(file_name , encoding='utf-8') as file_obj:
print(file_obj,read())
r=file_obj.readline()
print(r)
#将数据通过readline()返回一个列表,也可以将数据保存到列表
#pprint.pprint(r[0])
#pprint.pprint(r[1])
for t in file_obj:#遍历数据快
print(t)
- 大きなファイルを読みます
# 读取大文件的方式
file_name = 'demo.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# 定义一个变量,来保存文件的内容
file_content = ''
# 定义一个变量,来指定每次读取的大小
chunk = 100
# 创建一个循环来读取文件内容
while True:
# 读取chunk大小的内容
content = file_obj.read(chunk)
# 检查是否读取到了内容
if not content:
# 内容读取完毕,退出循环
break
# 输出内容
# print(content,end='')
file_content += content
except FileNotFoundError :
print(f'{file_name} 这个文件不存在!')
print(file_content)
ファイルへの書き込み
オープン()を使用して、ファイルを開いたときに(追加、書き込み、読み出し)操作を行うには、ファイルを開くために指定する必要があり
ますが、操作のタイプを指定しない場合、デフォルトのファイルが読み込まれ、そのファイルを読み込むときに、ファイルに書き込むことができません
モード | 意味 |
---|---|
R | これは、読み取り専用表し、 |
ワット | 表現は、ファイルがファイルが存在しない場合、ファイルが存在する場合、それはファイルを切り捨てます作成され、ファイルへの書き込みにワットを使用し、書き込み可能で、ファイルを切り捨てるすべてが元のファイルを削除することを意味します |
A | 追加コンテンツを表し、ファイルが存在しない場合、ファイルは、ファイルの内容に追加されますが存在する場合は、ファイルを作成します。 |
バツ | それを存在しないファイルが作成された場合は、新しいファイルに、エラーがあります |
+ | 増加関数演算子 |
R + | 読んでも、書き込みすることができ、ファイルはエラーを存在しません。 |
W + | 読み込みと書き込みのためにファイルを開きます。ファイルがすでにそのファイルを開いて、最初から編集を始め存在する場合、つまり、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します。 |
+ | 読み込みと書き込みのためにファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。ファイルを開いたときにはモードを追加します。ファイルが存在しない場合は、読み取りおよび書き込み用の新しいファイルを作成します。 |
with open(file_name , 'x' , encoding='utf-8') as file_obj:
# write()来向文件中写入内容,
# 如果操作的是一个文本文件的话,则write()需要传递一个字符串作为参数
# 该方法会可以分多次向文件中写入内容
# 写入完成以后,该方法会返回写入的字符的个数
file_obj.write('aaa\n')
file_obj.write('bbb\n')
file_obj.write('ccc\n')
r = file_obj.write(str(123)+'123123\n')
r = file_obj.write('今天天气真不错')
print(r)
numpyの
一つのファイルベースのオペレーティング科学技術計算の種類および/または機能のような多次元配列