问题标签 [linecache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何以不同的顺序有效地读取Python中的大文本文件行:a)每次随机行,b)从中间开始......?
我有一个大文本文件(500 万到 1000 万行)。每行有 10 到 5,000 个字母数字项目,它们之间用空格或逗号分隔。每行以换行符结束。行数在运行前是已知的,并且文本文件在运行时不会改变。
每次运行代码,都会传递 50-200个搜索列表,每个搜索列表包含 2-10 个项目(单词)。对于这些搜索列表中的每一个,我想在文本文件中找到x行,其中至少包含该列表中的一项。行数x范围为 5-10 行,并在运行时设置。匹配不区分大小写并且必须在单词边界上精确(例如,“foo”匹配“,foo”但不匹配“foobar”)。
每个搜索列表都有以下三种搜索顺序策略之一:
正常。从第一行开始,按连续顺序逐行搜索,直到找到x行或到达最后一行。
随机。从文本文件中随机选择行。继续前进,直到找到x行或完成对每一行的搜索。
桶范围。首先搜索最高优先级范围的行,然后是下一个最高优先级范围,然后是下一个,等等。例如,搜索范围优先级可能是首先查看行 1,000,000 到 1,499,999,然后是行 0 到 999,999,然后是行1,500,000 到 2,199,999 等。可以有 3 到 20 个桶,每个桶涵盖 100,000 到 5,000,000 行的范围。桶数和行号范围在运行时给出。在每个范围内,连续搜索。搜索直到找到x行或到达最后一个桶的末尾。
这是我为“正常搜索”编写的内容[此测试代码检查文件末尾的所有行,而不会在x行之后停止;在最终版本中,在为搜索列表找到x 个匹配项后,它会停止并继续前进到下一个搜索列表]:
此“正常搜索”代码有效。在我尝试过的方法中,它似乎是最快的,但我是 Python 新手,我想一定有更好的方法(速度/效率)来做到这一点。
[根据评论更新以更好地解释不同搜索策略的原因] 项目高度倾斜。使用数据,我发现大约一半的搜索将在 10,000 行之前完成,40% 可能需要几百万行才能找到足够的匹配项,而 10% 不会在整个文本文件中找到足够的匹配项。每行中的项目与它们所在的行无关,但行的范围相似(即 100,000-500,000 行相关,1,500,000-1,750,000 行相关等)。对于给定的搜索列表,代码可以运行多次,并且对于每次运行,优先级可能是关注不同范围的行。如果整个文本文件只有x行与特定搜索列表中的项目,那么结果将始终是那些x行。但是对于许多搜索列表,有2x、10x或100,000x行匹配,并且在不同的时间,我想选择不同的行。在某些时候,一个特定的范围可能是优先级,在其他时候随机采样是最好的,有时只从头开始找到前x行就可以了,因此“正常”、“随机”和“桶”搜索策略。
我真的很感激任何关于“随机”和“桶”的想法,因为我不确定如何最好地有效地接近它们。我玩弄linecache
, itertools islice
, readlines
(根据@Martin Thoma 在这个答案中,readlines
速度非常快),以及修改上面的代码,但我对“随机”和“桶”的尝试都是笨拙、低效的,我知道我不知道什么是最好的:)。
有什么建议么?谢谢。
string - 将来自两个不同文件的输入连接到一个单独的文件中
我想生成以下行
假设第一个数字是n
,第二个数字是n+1
,的内容\textarabic
是从获得的,从的f_nusoos
内容。两个文件的行数相同。\texttt
f_keys
我创建了一个 Python3 脚本,它应该可以得到我想要的,但我最终得到了新的行符号 ( \n
)。
这是我到目前为止所拥有的,
执行后的内容content.tex
是,
然而,我的期望是,
问题似乎是在texttt{CONTENT
. 我不知道这是为什么。
内容f_nusoos.txt
:
内容f_keys.txt
:
python - 捕捉线并用python修改它
我是python的新手。我目前正在尝试修改文件中的一行,这是在使用 linecache 捕获此行之后。
示例:
然后,我想修改该行的内容:
我有这个错误:
IndexError:列表索引超出范围
我尝试了许多格式类型,但不幸的是它仍然无法正常工作。你有什么建议吗:)
谢谢你。
python - 从今天开始运行 100 天的 Python 代码
从今天开始,我想在代码行下面运行 200 天。假设今天是第一天,所以我的代码是-
假设今天是第二天,所以我的代码是-
假设今天是第 3 天,所以我的代码变为 -
我希望每天计算 1,2,3,4,5......200 以上。我不希望循环运行 200 天。
我只需要从 python 日期系统或任何其他计数系统中获取 1,2,3,4,5......200 个计数。
python - Python 行缓存不起作用
在 Python 中,我有一个问题,每当我使用模块中的getline()
函数时linecache
,它根本不起作用。假设这是我在名为 的文本文档上的内容hi.txt
:
并说这是我在同一文件夹/目录中的 python 程序上的内容:
它什么也不会打印,只是一些空行。
python - while 循环中的 open 语句有问题
我剪切了我试图完成的脚本的一部分。我期待mylineS.split()[0]
每次迭代后都有新的结果。outS.txt
并且outT.txt
是每次迭代的结果,commandC
并且每次迭代的结果都不同。但是mylineS.split()[0]
会为每次迭代带来第一个结果。
我猜我的方法有问题,有什么想法吗?
commandC 是subprocess.run(commandC, shell=True)
. 我在写底部。
python - 连接来自 2 个不同行的 2 个字符串(来自文本文件) - 使用 linecache
我正在尝试使用 linecache 连接来自两个不同行的 2 个字符串,但是当我尝试时,输出总是在 2 行而不是 1 行。
文件中的文字:
你好
世界
代码:
结果:
结果(消息)是:两行hello world (第一行是hello,第二行是world)
这不是我想要的,我想要这个:hello world on a single line
任何帮助,将不胜感激!:-)
PS对不起我的英语!
python - 试图写“饼干”-OFC 它不起作用,但我认为它可以 xD
我对 python 很陌生,我尝试编写“cracker”(不是真的,只是一个编写所有可能组合的程序)。
我使用了 linecache,然后只是 while 循环(太多了)。
这个想法是用 aZ 和 0-9 个字符制作一个字典,然后使用 linecache 获取字符并将它们放在一起
(它只改变了 2 个字符,但是当我尝试 8 个字符时......)
由于我是 python 新手,我并不是一个真正有意图的朋友,但不知何故我让它工作了,但是......
问题是它永远不会:
..................................................... .........................................
python - Python:linecache.getline 未按预期工作
我有一个包含许多子目录的目录。
在目录的底部有一些 .txt 文件,我需要从中提取第 2 行。
我能够成功解析所有目录并找到每个文本文件。但是 linecache.getline 只返回换行符(应该有来自该行文件的数据)。使用
也不解决这个问题。
我能够正确打印出每个目录中的文件名,但是将它们传递给 linecache 似乎可能是问题所在。linecache.getline(file, lineno.)
如果我只是在当前目录中的 1 个 .txt 文件上运行脚本,我就可以成功使用。
python - 从文本文件中检索一个变量时比较 2 个变量
我正在尝试编写将变量b与使用linecache.getline从文本文件中检索的值进行比较的代码
问题是它永远不会打印我们的“ITS WORKING”,因为这些值永远不会匹配,即使它们匹配:-(
文本文件:在文本文件中只有一个字符及其“a”
这是代码: