以下代码是否有其他替代方法:
startFromLine = 141978 # or whatever line I need to jump to
urlsfile = open(filename, "rb", 0)
linesCounter = 1
for line in urlsfile:
if linesCounter > startFromLine:
DoSomethingWithThisLine(line)
linesCounter += 1
Run Code Online (Sandbox Code Playgroud)
如果我正在(~15MB)使用未知但不同长度的行处理一个巨大的文本文件,并且需要跳转到我事先知道的特定行?当我知道我至少可以忽略文件的前半部分时,我会逐个处理它们.寻找更优雅的解决方案,如果有的话.
我在一个文件中有一个ASCII表,我想从中读取一组特定的行(例如,行4003到4005).问题是这个文件可能非常长(例如,数千到数百万行),我想尽快做到这一点.
糟糕的解决方案:读入整个文件,然后转到这些行,
f = open('filename')
lines = f.readlines()[4003:4005]
Run Code Online (Sandbox Code Playgroud)
更好的解决方案:enumerate在每条线路上,以便它不在内存中(la /sf/answers/145731631/)
f = open('filename')
lines = []
for i, line in enumerate(f):
if i >= 4003 and i <= 4005: lines.append(line)
if i > 4005: break # @Wooble
Run Code Online (Sandbox Code Playgroud)
最佳方案?
但这仍然需要通过每一行.是否有更好的(在速度/效率方面)访问特定线路的方法?即使我只访问文件一次(通常),我应该使用linecache吗?
使用二进制文件,在这种情况下可能更容易跳过,是一个选项---但我宁愿避免它.
我有一个大约20亿行文本的文件(~200gig).我想生成一个包含相同文本行的新文件,但是按行随机洗牌.我无法将所有数据保存在内存中.有没有一个很好的方法在python /命令行中执行此操作需要一段合理的时间(几天)?
我以为我可以触摸50个空文件.流过20亿行文件,并将每行随机分配到50个空文件中的一个.然后cat 50个文件.对这种方法有任何重大的系统偏见吗?
python的新手,并试图学习文件i/o的绳索.
我正在使用以下格式从大型(200万行)文件中提取行:
56fr4
4543d
4343d
5irh3
Run Code Online (Sandbox Code Playgroud)
这是我用来返回代码的函数:
def getCode(i):
with open("test.txt") as f:
for index, line in enumerate(f):
if index == i:
code = # what does it equal?
break
return code
Run Code Online (Sandbox Code Playgroud)
一旦索引到达正确的位置(i),我使用什么语法来设置代码变量?
我的代码
def yieldlines(thefile, whatlines):
return (x for i, x in enumerate(thefile) if i in whatlines)
file1=open('/home/milenko/EDIs/site1/newst2.txt','r')
whatlines1 = [line.strip() for line in open('m1.dat', 'r')]
x1=yieldlines(file1, whatlines1)
print x1
Run Code Online (Sandbox Code Playgroud)
我有
<generator object <genexpr> at 0x7fa3cd3d59b0>
Run Code Online (Sandbox Code Playgroud)
我应该把列表放在哪里,或者我需要重写代码?
我希望我的程序写入文件并读取内容,以便在m1.dat中编写特定行.我发现该解决方案 只读取特定行(Python)
例如,如何才能仅从该csv文件中的行5000到6000读取?此时,“用于阅读器中的行:”当然会遍历所有行。
所以我有这样的话:
with open('A.csv', 'rt') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
response = urllib2.urlopen(row[12])
Run Code Online (Sandbox Code Playgroud)
此代码用于打开特定的URL链接。
我正在从一些类似于以下内容的文本文件中解析日期/时间/测量信息:
[Sun Jul 15 09:05:56.724 2018] *000129.32347
[Sun Jul 15 09:05:57.722 2018] *000129.32352
[Sun Jul 15 09:05:58.721 2018] *000129.32342
[Sun Jul 15 09:05:59.719 2018] *000129.32338
[Sun Jul 15 09:06:00.733 2018] *000129.32338
[Sun Jul 15 09:06:01.732 2018] *000129.32352
Run Code Online (Sandbox Code Playgroud)
结果进入输出文件,如下所示:
07-15-2018 09:05:56.724, 29.32347
07-15-2018 09:05:57.722, 29.32352
07-15-2018 09:05:58.721, 29.32342
07-15-2018 09:05:59.719, 29.32338
07-15-2018 09:06:00.733, 29.32338
07-15-2018 09:06:01.732, 29.32352
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码如下所示:
import os
import datetime
with open('dq_barorun_20180715_calibtest.log', 'r') as fh, open('output.txt' , 'w') as fh2:
for line in fh:
line = line.split()
monthalpha = …Run Code Online (Sandbox Code Playgroud) 我正在阅读一个> 10,000行的文本文件.
results_file = open("Region_11_1_micron_o", 'r')
Run Code Online (Sandbox Code Playgroud)
我想在特定字符串"chart"之后跳转到文件中的行,该字符串出现在第no行附近.7000(不同文件不同).有没有办法方便地做到这一点,而无需阅读文件的每一行?
我试图在两个文件之间连接片段特定的行.这样我想从file2中的第2行添加一些东西到file1的第2行.然后从第6行从file2到文件1的第6行,依此类推.有没有办法同时迭代这两个文件来做到这一点?(知道输入文件大约为15GB可能会有所帮助).
这是一个简化的例子:
档案1:
Ignore
This is a
Ignore
Ignore
Ignore
This is also a
Ignore
Ignore
Run Code Online (Sandbox Code Playgroud)
文件2:
Ignore
sentence
Ignore
Ignore
Ignore
sentence
Ignore
Ignore
Run Code Online (Sandbox Code Playgroud)
输出文件:
Ignore
This is a sentence
Ignore
Ignore
Ignore
This is also a sentence
Ignore
Ignore
Run Code Online (Sandbox Code Playgroud) 我只想从 csv 文件中的某一行开始读取一定数量的行,而不需要遍历整个 csv 文件以达到这个特定点。
假设我有一个包含 100 行的 csv 文件,我只想读取第 50 行到第 60 行。我不想从第 1 行到第 49 行迭代以到达第 50 行以开始读取。我可以用seek()以某种方式实现这一目标吗?
例如:Seek to row 50 read from 50 to 60
下一次:寻求第 27 行读取 27 到 34,依此类推
因此,不仅在文件中继续向前查找,而且还向后查找。
非常感谢
我有一个非常大的文件,我想打开它并从中读取特定行,我总是知道我想要的数据所在的行号,但我不想每次都读取整个文件来读取它具体线路。
有没有办法只能读取 Python 中的特定行?或者最有效的方法是什么(即尽可能少地读取文件,以加快执行速度)?
python ×12
csv ×2
file ×2
python-3.x ×2
text-files ×2
enumerate ×1
file-io ×1
generator ×1
io ×1
large-files ×1
linux ×1
list ×1
optimization ×1
performance ×1
python-2.x ×1
shuffle ×1