Python 파일 기반의 파일 작업에 대한 자세한 소개
在之前学习了python的列表、元组、集合等知识,接下来将python的文件相关的知识做一总结和分析。
一 open函数
在我们用word、excel、vim对文件操作时,肯定要先打开文件,同样在编程里面也是需要将文件打开,然后再对文件操作,操作完对文件进行关闭。文件打开使用open()函数,同时创建一个相关的对象。
、基本语法:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) 参数介绍: file:表示文件名,可以使用绝对路径和相对路径,还有可以根据mode方式决定文件的追加或者覆盖 mode:表示打开文件的模式 buffering:设置缓存模式。0表示不缓存,1表示缓存;如果大于1则表示缓冲区的大小,以字节为单位。 encoding:表示打开文件的编码格式 errors:参数errors是用来指明编码和解码错误时怎么样处理。不能在二进制的模式下使用。 1)当指明为’strict’时,编码出错则抛出异常ValueError。 2)当指明为’ignore’时,忽略错误。 3)当指明为’replace’时,使用某字符进行替代模式,比如使用’?’来替换出错的。 4)其它相应还有surrogateescape/xmlcharrefreplacs/backslashreplace。 newline: 参数newline是用来控制文本模式之下,一行的结束字符。可以是None,’’,\n,\r,\r\n等。 当在读取模式下,如果新行符为None,那么就作为通用换行符模式工作,意思就是说当遇到\n, \r或\r\n都可以作为换行标识,并且统一转换为\n作为文本输入的换行符。当设置为空’’时, 也是通用换行符模式工作,但不作转换为\n,输入什么样的,就保持原样全输入。当设置为其它相应 字符时,就会判断到相应的字符作为换行符,并保持原样输入到文本。 当在输出模式时,如果新行符为None,那么所有输出文本都是采用\n作为换行符。如果设置为’’ 或者\n时,不作任何的替换动作。如果是其它字符,会在字符后面添加\n作为换行符。 closefd:是用来当给一个文件句柄传进来时,而当退出文件使用时,而不对文件句柄进行关闭。如果传 递一个文件名进来,这个参数无效,必定为True方式。
关于上面提到的mode模式种类比较多,我们做以下相关介绍和总结,
二进制在我们处理图像等信息时使用比较多,而其他部分在我们操作字符串等内容比较多。
简单的示例:
示例文件内容: 我曾经问个不休 你何时跟我走 可你却总是笑我 一无所有 我要给你我的追求 还有我的自由 可你却总是笑我 一无所有 噢 你何时跟我走 噢 你何时跟我走 脚下的地在走 身边的水在流 可你却总是笑我 一无所有 为何你总笑个没够 为何我总要追求 难道在你面前 我永远是一无所有 Process finished with exit code 0 #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') readline=a_File.read() print(readline) 结果: 我曾经问个不休 你何时跟我走 可你却总是笑我 一无所有 我要给你我的追求 还有我的自由 可你却总是笑我 一无所有 噢 你何时跟我走 噢 你何时跟我走 脚下的地在走 身边的水在流 可你却总是笑我 一无所有 为何你总笑个没够 为何我总要追求 难道在你面前 我永远是一无所有 上面使用的r模式打开,我们采取尝试写入文件,写入内容为字符串openstack\nMYSQLDBA #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') readline=a_File.read() print(readline) a_File.write("openstack\nMYSQLDBA") a_File.close() 结果:文件不可写 Traceback (most recent call last): File "D:/project/myapp/hello.py", line 6, in <module> a_File.write("openstack\nMYSQLDBA") io.UnsupportedOperation: not writable 我们再尝试用二进制方式打开文件查看内容: #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","rb") #去掉了编码格式 readline=a_File.read() print(readline) #a_File.write("openstack\nMYSQLDBA") a_File.close() 结果: b'\xe6\x88\x91\xe6\x9b\xbe\xe7\xbb\x8f\xe9\x97\xae\xe4\xb8\xaa\xe4\xb8\x8d\xe4\xbc\x91 \xe4\xbd\xa0\xe4\xbd\x95\xe 其他内容繁多,因此不再演示其他的mode模式
在研究完我们如何将文件打开后,我们就要考虑如何处理打开的文件,主要涉及到文件对象的一些方法。
下面根据不同的方法做简单介绍以及相关示例
读操作:读的有file.read() filereadline() filereadlies()等三种方法
1、file.read()方法
里面的参数是size,表示从文件中读取size大小字节,当默认为空或者为负值时表示读取所有的字节,
示例:
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果1".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.read(-1)) 结果: ###############################################测试结果1################################################ 我曾经问个不休 你何时跟我走 可你却总是笑我 一无所有 我要给你我的追求 还有我的自由 可你却总是笑我 一无所有 噢 你何时跟我走 噢 你何时跟我走 脚下的地在走 身边的水在流 #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果2".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.read()) 结果: ###############################################测试结果2################################################ 我曾经问个不休 你何时跟我走 可你却总是笑我 一无所有 我要给你我的追求 还有我的自由 可你却总是笑我 一无所有 噢 你何时跟我走 噢 你何时跟我走 脚下的地在走 身边的水在流 #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果3".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.read(3)) 结果: ###############################################测试结果3################################################ 我曾经 #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果4".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.read(15)) 结果: ###############################################测试结果4################################################ 我曾经问个不休 你何时跟我走
可以发现read方法是受字节数量控制的,字节数量的控制影响其输出
2、readline()方法
读取整行包括”\n”换行,参数也是[size]控制,其和read()的区别就是当readline()某行中的字符不够时,只读取改行,而read()会读取其他行的内容。
示例(两者的区别)
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果1".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.read(50)) print("测试结果2".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readline(100)) 结果: ###############################################测试结果1################################################ 我曾经问个不休 你何时跟我走 可你却总是笑我 一无所有 我要给你我的追求 还有我的自由 可你却总是笑 ###############################################测试结果2################################################ 我 一无所有
readline()方法默认值和负值的相关示例
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果1".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readline()) print("测试结果2".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readline(-1)) print("测试结果3".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readline(4)) print("测试结果4".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readline(10)) 结果: ###############################################测试结果1################################################ 我曾经问个不休 你何时跟我走 ###############################################测试结果2################################################ 可你却总是笑我 一无所有 ###############################################测试结果3################################################ 我要给你 ###############################################测试结果4################################################ 我的追求 还有我的自
3、readlines()取文件里的所有行并返回列表,若sizeint>0返回总行约为sizeint字节的行,实际读取的值可能比sizeint较大,因为需要缓冲区。则读取指定长度的字节, 并且将这些字节按行分割。
例如:
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果1".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readlines(14)) ###############################################测试结果1################################################ ['我曾经问个不休 你何时跟我走\n'] #!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile.txt","r",encoding='utf-8') #readline=a_File.read(1) print("测试结果1".center(100,'#')) #为了更好的展现测试结果分割 print(a_File.readlines(14)) ['我曾经问个不休 你何时跟我走\n', '可你却总是笑我 一无所有\n'] 当我们设置sizeint值大于行中的字符时才能显示其他行的内容
4、file.close()
关闭文件 关闭文件后不能再进行读写操作文件对象的close()方法刷新未写入的信息,并关闭该文件的对象,在这之后没有数据内容可以执行写入。
Python自动关闭,当文件的引用对象被重新分配给另外一个文件。它是使用close()方法来关闭文件是一个很好的做法。
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile2.txt","w+") #readline=a_File.read(1) a_File.write("winnerlookopenatck") a_File.close() 将文件写入 写入内容: winnerlookopenatck
5、flie.write()
write()方法写入字符串到任何一个打开的文件。要注意的是Python字符串可以具有二进制数据,而不仅仅是文字。
write()方法不要将换行字符(' ')添加到字符串的结尾。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容。
例如:
#!/usr/bin/env python #_*_coding:utf-8_*_ a_File=open("D:\\pythonfile2.txt","w+") #readline=a_File.read(1) a_File.write("winnerlookopenatck") a_File.close()
6、file.writelines()
file.writelines()方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"]#定义列表 a_File=open("D:\\pythonfile2.txt","w+") #readline=a_File.read(1) a_File.writelines(sed) a_File.close() 结果: openstack: 1 docker 2 mysqlDBA 3 KVM 4
7、file.flush()
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。没有返回值
例如
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] a_File=open("D:\\pythonfile2.txt","w+") #readline=a_File.read(1) a_File.writelines(sed) a_File.flush() a_File.close()
8、file.next()
next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration
示例:
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile2.txt","w+") for index in range(3): line = next(aFile) print("第%d行-%s" % (index,line))
9、file.tell()
file.tell()方法返回文件的当前位置,即文件指针当前位置。
语法:
fileObject.tell(offset[, whence])
返回值当前文件指针
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile.txt","r",encoding="utf-8") print(aFile.readline(30)) print(aFile.tell()) 我曾经问个不休 你何时跟我走我曾经问个不休 你何时跟我走我曾 86 #!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile.txt","r",encoding="utf-8") print(aFile.readline()) print(aFile.tell()) 我曾经问个不休 你何时跟我走我曾经问个不休 你何时跟我走我曾经问个不休 你何时跟我走我曾经问个不休 你何时跟我走 162
10、file.isatty()
file.isatty()方法检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False
用法:
fileObject.isatty() #!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile.txt","r",encoding="utf-8") print(aFile.isatty()) False
11、file.seek()
seek() 方法用于移动文件读取指针到指定位置,没有返回值
seek() 方法语法如下:
fileObject.seek(offset[, whence])
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile.txt","r",encoding="utf-8") print(aFile.readline(10)) print(aFile.readline(10)) aFile.seek(0,0)#设置起始位置为0 print(aFile.readline(10)) 结果: 我曾经问个不休 你何 时跟我走我曾经问个不 我曾经问个不休 你何 总结打印完第一行后,下次打印从上次的位置接上,而重新设置其位置后在开始位置打印
12、file.fileno()
方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。返回值为一个文件描述符:
#!/usr/bin/env python #_*_coding:utf-8_*_ sed=["openstack: 1\n","docker 2\n","mysqlDBA 3\n","KVM 4\n"] aFile=open("D:\\pythonfile.txt","r",encoding="utf-8") print(aFile.fileno()) 结果: 3
13、file.truncate()
truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除
truncate() 方法语法如下:
fileObject.truncate( [ size ]) 参数
위 내용은 Python 파일 기반의 파일 작업에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

MySQL 다운로드 파일은 손상되었습니다. 어떻게해야합니까? 아아, mySQL을 다운로드하면 파일 손상을 만날 수 있습니다. 요즘 정말 쉽지 않습니다! 이 기사는 모든 사람이 우회를 피할 수 있도록이 문제를 해결하는 방법에 대해 이야기합니다. 읽은 후 손상된 MySQL 설치 패키지를 복구 할 수있을뿐만 아니라 향후에 갇히지 않도록 다운로드 및 설치 프로세스에 대해 더 깊이 이해할 수 있습니다. 파일 다운로드가 손상된 이유에 대해 먼저 이야기합시다. 이에 대한 많은 이유가 있습니다. 네트워크 문제는 범인입니다. 네트워크의 다운로드 프로세스 및 불안정성의 중단으로 인해 파일 손상이 발생할 수 있습니다. 다운로드 소스 자체에도 문제가 있습니다. 서버 파일 자체가 고장 났으며 물론 다운로드하면 고장됩니다. 또한 일부 안티 바이러스 소프트웨어의 과도한 "열정적 인"스캔으로 인해 파일 손상이 발생할 수 있습니다. 진단 문제 : 파일이 실제로 손상되었는지 확인하십시오

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL이 시작을 거부 했습니까? 당황하지 말고 확인합시다! 많은 친구들이 MySQL을 설치 한 후 서비스를 시작할 수 없다는 것을 알았으며 너무 불안했습니다! 걱정하지 마십시오.이 기사는 침착하게 다루고 그 뒤에있는 마스터 마인드를 찾을 수 있습니다! 그것을 읽은 후에는이 문제를 해결할뿐만 아니라 MySQL 서비스에 대한 이해와 문제 해결 문제에 대한 아이디어를 향상시키고보다 강력한 데이터베이스 관리자가 될 수 있습니다! MySQL 서비스는 시작되지 않았으며 간단한 구성 오류에서 복잡한 시스템 문제에 이르기까지 여러 가지 이유가 있습니다. 가장 일반적인 측면부터 시작하겠습니다. 기본 지식 : 서비스 시작 프로세스 MySQL 서비스 시작에 대한 간단한 설명. 간단히 말해서 운영 체제는 MySQL 관련 파일을로드 한 다음 MySQL 데몬을 시작합니다. 여기에는 구성이 포함됩니다

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.
