『壹』 Python中怎么修改文件中的某一行内容。(文件很大,不能读取全部内容)
摘要:Python环境下文件的读取问题,请参见拙文Python基础——文件这是一道著名的Python面试题,考察的问题是,Python读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。1.read()接口的问题f=open(filename,'rb')f.read()我们来读取1个nginx的日至文件,规模为3Gb大小。read()方法执行的操作,是一次性全部读入内存,显然会造成:MemoryError...也即会发生内存溢出。2.解决方案:转换接口(1)readl
Python 环境下文件的读取问题,请参见拙文 Python 基础 —— 文件
这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。
1. read() 接口的问题
f = open(filename, 'rb') f.read()我们来读取 1 个 nginx 的日至文件,规模为 3Gb 大小。read() 方法执行的操作,是一次性全部读入内存,显然会造成:
MemoryError ...也即会发生内存溢出。
2. 解决方案:转换接口3. 真正 Pythonic 的方法
真正 Pythonci 的方法,使用 with 结构:
with open(filename, 'rb') as f: for line in f: <do something with the line>对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。
There should be one – and preferably only one – obvious way to do it.
(1)readlines() :读取全部的行,构成一个 list,实践表明还是会造成内存的问题;
for line in f.reanlines(): ...(2)readline():每次读取一行,
while True: line = f.readline() if not line: break(3)read(1024):重载,指定每次读取的长度
while True: block = f.read(1024) if not block: break然后在循环里面替换就好了
『贰』 KML如何制作表格
你好!
KML可以制作表抄格,基本途径有两个,前提都是要在转换成纯数据的基础上。实际上这个问题的技巧也就在如何转移成纯数据上。基本思路是:通过直接修改扩展名将KML文件变成HTML文件,通过浏览器强行打开转换后得到的文件(目的是过滤掉程序代码),这时得到的就是纯数据了。拷贝,通过文本编辑器或HTML编辑器,就可以轻松转换成表格了。
——如何使用字处理程序的批处理功能,就不用介绍了吧。
打字不易,采纳哦!
『叁』 Python文件操作,看这篇就足够!
文件的存储方式
在计算机中,文件是以二进制的方式保存在磁盘上的文本文件和二进制文件
文本文件可以使用文本编辑软件查看本质上还是二进制文件
二进制文件保存的内容不是给人直接阅读的,而是提供给其她软件使用的二进制文件不能使用文件编辑软件查看
文件基本操作
在计算机中要操作文件一共包含三个步骤:1.打开文件2.读、写文件
读 将文件内容读入内容写 将内存内容写入文件
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
文件打开模式有很多,但是我们实际用到的就只有六种。
我们总结一下主要用到的是下面六种
模式可做操作若文件不存在是否覆盖文件原来内容
r只读报错——
r+可读、可写报错是
w只写创建是
w+可读、可写创建是
a只写创建否,追加写
a+可读、可写创建否,追加写
只读模式打开文件——只读(r)
文件若不存在报错:
读写模式打开文件——读写模式(r+)
数据写入之前:
数据写入之后:
会替换掉相同长度的内容
文件若不存在报错:
写模式打开文件——写模式(w)
数据写入之前:
数据写入之后:
这种操作会删除原来的文件内容,重新写入Python,
并且把光标放在文件最开始。
若文件不存在,系统会创建该文件夹并重新写入内容
读写模式打开文件——读写模式(w+)
数据写入之前:
数据写入之后:
这种操作会删除原来的文件内容,重新写入Python,
并且把光标放在文件最开始。
若文件不存在,系统会创建该文件夹并重新写入内容
利用这个原理所以文件写模式(w)、读写模式(w+)还可以用作删除文件内容。
因为他们整个工作原理就是把文件原来的内容删除,然后写入新的内容。
如果我们写入的内容为空,那么不就是删除文件内容。
数据写入之前:
数据写入之后:
写模式打开文件(追加内容)——写模式(a)
数据写入之前:
数据写入之后:
可以看到是在原先内容的基础上在文末追加新的内容!
若文件不存在,系统会创建新的文件夹并写入内容
读写模式打开文件(追加内容)——读写模式(a)
数据写入之前:
数据写入之后:
可以看到是在原先内容的基础上在文末追加新的内容!
若文件不存在,系统会创建新的文件夹并写入内容
二进制模式打开文件
我们看到了在文件打开模式中有以下模式:rb、wb……有这种带 b 的。
什么意思呢?
就是用二进制的方式打开文件。
很明显,我们出现了以下错误:
主要原因是因为编码的问题,可能是因为0x82这个字节在gbk编码中没有这个字符,
可能原字符是两个字节,在gbk里被解析成了一个字节,导致字符不存在。
这就是我们文件打开方式需要使用二进制读取的原因。
文件操作
open 函数负责打开文件,并且返回文件对象
read /write / close 三个方法都需要通过文件对象 来调用
文件和文件夹的操作
在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,
具体步骤如下:
导⼊os模块
使⽤ os 模块相关功能
1、文件重命名
2、删除文件
3、创建文件夹
4、删除文件夹
5、获取当前目录
6、改变默认目录
7、获取目录列表
『肆』 怎么打开kml文件
kml文件同kmz文件一样,是作为保存地标文件的.其引入引出方法与kmz类似,只是选择文件格式为kml就行了.
kml与kmz不同的是,它是一种xml描述语言,是文本文件格式的.所以有它的优点,比如,可以直接贴在本网页上. 由于是文本文件格式,其格式我们可以掌握,因而能通过程序自动生成kml语句.
二.earth里的使用
引入方法:与kmz文件一样,直接打开就行了.
引出方法:与kmz文件类似,但在输入文件名时,要选择存为kml文件.
三.如何从网页上下来,生成引入的kml文件
1.在你的earth里,先随便引出任一kml地标文件
2.在资源浏览器里用鼠标右键点按此文件,选择菜单"打开方式"-->"记事本(notepad)",注意不要双击此kml文件
3.在博客上打开已发布的kml文本网页
4.从菜单中选择“全选”,“拷贝”
5.回到2中记事本打开的kml文件里,按"ctrl-A"或用菜单“全选”全选所有文本,按"ctrl-V"或菜单"粘贴"粘贴从网页中来的文本
6.把包括“-------------------”以前的文本,不包括“</kml>”以后的文本删除,然后按菜单"保存"保存文件
7.在earth中打开或直接在资源浏览器里双击此kml文件,即引入了此kml文件
8.注意kml文件引入后,可能不会放在temporary places里,而是直接放在它原来的文件夹里