将两个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:

我有两个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:
          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_。你在哪里见过这个?