将两个python脚本合并为一个程序运行
我有两个python脚本,我想将它们合并并作为一个程序运行。但是我不确定我到底需要修改什么才能使这两个脚本一起工作 这是我的第一个代码:将两个python脚本合并为一个程序运行,python,python-3.x,Python,Python 3.x,我有两个python脚本,我想将它们合并并作为一个程序运行。但是我不确定我到底需要修改什么才能使这两个脚本一起工作 这是我的第一个代码: import random with open('filename.txt') as fin: lines = fin.readlines() random.shuffle(lines) for i, line in enumerate(lines): if i >= 0 and i < 6800:
import random
with open('filename.txt') as fin:
lines = fin.readlines()
random.shuffle(lines)
for i, line in enumerate(lines):
if i >= 0 and i < 6800:
print(line, end='')
但我不太明白它的功能。因此,如果这是解决方案,我想了解如何使用它来解决我的问题
请帮助我找出如何组合这两个脚本,修改它们使代码作为一个脚本运行。我很乐意合作并澄清任何事情
[编辑]我的文件采用以下格式
我的随机文件的一个示例:
3 10045 0.120559958
4 157465 0.590642951
1 222471 0.947959795
3 222473 0.083341617
2 222541 0.054014337
5 222588 0.060296547
2 143521109 4.57E-08
1 201466556 5.57E-08
1 11566373 8.43E-08
1 143627370 8.61E-08
6 98624499 1.02E-07
我正在与随机文件进行比较的另一个文件示例:
3 10045 0.120559958
4 157465 0.590642951
1 222471 0.947959795
3 222473 0.083341617
2 222541 0.054014337
5 222588 0.060296547
2 143521109 4.57E-08
1 201466556 5.57E-08
1 11566373 8.43E-08
1 143627370 8.61E-08
6 98624499 1.02E-07
想象一下,不是有两个脚本,而是每个脚本都是一个函数,然后它们都是从另一个函数调用的 换句话说,您将拥有以下内容:
def first_code():
...code of first script goes here...
def second_code():
...code of second script goes here...
def master_function():
first_code()
second_code()
现在,如果调用master_函数,那么其他两个函数也是。如果将该定义替换为main:
if __name__ == "__main__":
first_code()
second_code()
如果您从命令行执行脚本,它将自动运行。不要在第一个程序中打印,而是尝试从该输出创建字典,然后您可以使用该dict,而不是复制输出,再次保存和加载。你会节省很多时间。
因此,在第一个文件中,尝试创建一个dict,并将print更改为append to the dict。您不需要另一个脚本,只需使用第二个使用风管的代码而不是新文件扩展第一个脚本即可。我对您的代码进行了如下修改:
import csv
import random
with open('filename.txt') as fin:
lines = fin.readlines()
random.shuffle(lines)
rnd_str = []
for i, line in enumerate(lines):
if i >= 0 and i < 6800:
rnd_str.append(line)
r = rnd_str
dict1 = {}
for row in r:
a, b, v = row.split()
dict1.setdefault((a,b),[]).append(v)
with open ("filename2.txt") as f:
dict2 = {}
r = csv.reader(f,delimiter="\t")
dict2 = {}
for row in r:
a, b, v = row.split()
dict2.setdefault((a,b),[]).append(v)
count = 0
for key1 in dict1:
for key2 in dict2:
if (key1[0] == key2[0]) and ((float(key1[1]) - (float(key2[1]))) < 0):
count += 1
print(count)
因此,您无需保存随机文件,您可以在代码的第二部分处理其内容,即与其他文件的内容进行比较
注意:这是您的代码中的原始代码:
abs((float(key1[1].split(" ")[0])) - (float(key2[1].split(" ")[0]))) < 0
这让我笑了,因为absx怎么可能<0
不管怎样,脚本现在可以工作了,它会根据您提供的示例生成4个结果。别担心。没有必要修改你的代码。只需制作一个新脚本并将其放入其中:
def code1():
import firstprogram
def code2():
import secondprogram
code1()
code2()
这将运行第一个程序和第二个程序。只需确保用两个程序的名称替换firstprogram和secondprogram。您可以做的一件事是在主文件中键入第二个文件名。例如,我的第一个文件名是“main.py”,第二个文件名是“float.py”。您可以通过键入以下内容将这些文件合并在一起: _合并='float.py' 在主文件中,即“main.py” 希望它能起作用 提前谢谢大家 问候,,
VC我不明白第1部分和第2部分的结果是如何结合在一起的:在第1部分中,您只是以随机顺序打印filename.txt的行。这与第2部分有什么关系?在我打印随机行之后,我将其保存为文本文件。之后,我打开第二个代码,将保存的文本文件与另一个文件进行比较。我不想提取和保存文本文件,而是想将这两个代码结合起来。这样,在提取随机线时,它们会自动与我的其他文件进行比较@如果您正确阅读第一个代码,您将看到它只打印6800行。因此,每次运行代码时,它都会随机打印文件中的6800行。我没有看到随机行被保存为文本文件。如果您通过重定向stdout甚至复制粘贴等方式手动执行此操作,您应该提到这一点。但是你的问题不清楚第一部分是如何连接到第二部分的,只是第二部分打开了一个名为Randomfile.txt的文件。什么意思?你在任何地方都看不到作为文本文件保存的随机文件。将python脚本保存为文本文件是否需要在程序中实际显示?我不这么认为。在第二段代码的第一段中,我说在提取随机行之后,我将结果保存为文本文件。然后,我在第二个程序中打开保存的文本文件,与另一个文件进行比较。我真的不明白是什么让人如此困惑,先生@EvertThanks对于这个解释@dmargol再简单不过了。在某种程度上,我想我理解。作为一个新手,我赞成这种脚本风格。谢谢你前几天的回答。我一直在使用你的建议,但我有一个问题。现在,当我运行代码时,我不断得到一个值0。我不明白为什么会这样。无论我是否更改<0:都小于零。例如,如果我写<10000,我仍然得到一个不应该为0的值@请提供我。E复制粘贴或其他共享一些文件或列表,这些文件或列表是复制结果的可能输入,我会发现。如果您想提供我正在使用的文件的示例,我只是在上面的问题中提供了一个示例@GyörgySolymosiAn example fro Randomfile.txt tooIve提供了这两个文件的示例。我的随机文件和我正在比较的文件的一个示例。它们都采用相同的格式,由三列组成,每列@GyörgySolymosiAdding_merge_='float.py'在Python中除了赋值之外,什么都不做 将字符串“float.py”添加到名称_merge_。你在哪里见过这个?