将两个python脚本组合起来作为一个程序运行

时间:2015-07-24 04:05:28

标签: 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:
          print(line, end='')

这是第二个:

import csv
with open ("Randomfile.txt") as f:
   dict1 = {}
   r = csv.reader(f,delimiter="\t")
   for row in r:

      a, b, v = row
      dict1.setdefault((a,b),[]).append(v)

   #for key in dict1:
      #print(key[0])
      #print(key[1])
      #print(d[key][0]])

with open ("filename2.txt") as f:
   dict2 = {}
   r = csv.reader(f,delimiter="\t")
   for row in r:

      a, b, v = row
      dict2.setdefault((a,b),[]).append(v)

  #for key in dict2:
     #print(key[0])

   count = 0
   for key1 in dict1:
      for key2 in dict2:
         if (key1[0] == key2[0]) and abs((float(key1[1].split(" ")[0])) - (float(key2[1].split(" ")[0]))) < 0:
           count += 1

print(count)

我通常使用第一个代码,我提取一组随机元素。然后我将其保存为文本文件,在第二个代码中打开它并将其与我的其他文件进行比较以获得我的结果。

但是,我基本上想跳过保存和重新打开过程。我想将我的第一个脚本放在第二个脚本中并更改代码以使其作为一个脚本运行。因此,当我的元素被提取时,它们会自动与我的其他文件进行比较。

我已阅读并观看了有关使用

的视频
 if __name__==__main__

但我真的不了解它的功能。因此,如果这是解决方案,我很想了解如何使用它来解决我的问题。

请帮助我弄清楚我如何组合这两个脚本,改变它们以使代码一起运行。我乐意合作并澄清任何事情。

[编辑] 我的文件格式如下。

我的随机文件示例:

  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

5 个答案:

答案 0 :(得分:3)

想象一下,不是有两个脚本,而是每个脚本都是一个函数,然后它们都是从另一个函数调用的。

换句话说,您将拥有以下内容:

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_function(),则另外两个也是如此。如果用main替​​换该定义:

if __name__ == "__main__":
    first_code()
    second_code()

如果从命令行执行脚本,它将自动运行。

答案 1 :(得分:2)

好吧,我修改了你的代码如下:

abs((float(key1[1].split(" ")[0])) - (float(key2[1].split(" ")[0]))) < 0

因此,您无需保存随机文件,您可以在代码的第二部分处理其内容,即与其他文件的内容进行比较。

注意:它在您的代码中是原始的:

abs(x) < 0

让我微笑,因为4怎么可能?

无论如何,脚本现在可以根据您提供的样本生成<?php $post_id = 3; //use the id you need here $post = get_post( $post_id ); //post content is in $post->post_content

答案 2 :(得分:-1)

不是在第一个程序中打印,而是尝试从该输出创建字典,然后您可以使用该字典而不是复制输出,再次保存和加载。你会节省很多时间。 所以在第一个文件中尝试创建一个dict并将print更改为附加到该dict。你不需要另一个脚本,只需使用第二个代码扩展第一个脚本,使用管道而不是新文件。

答案 3 :(得分:-1)

别担心。没有必要改变你的代码。只需制作一个新脚本并将其放入其中:

def code1():
    import firstprogram

def code2():
    import secondprogram

code1()
code2()

这将运行您的第一个程序和第二个程序。只需确保将 firstprogram secondprogram 替换为两个程序的名称。

答案 4 :(得分:-2)

您可以做的一件事是在主文件中输入第二个文件名。例如,我的第一个文件名为“main.py”,第二个文件名为“float.py”,您可以通过键入以下内容将这些文件合并: _merge_ = 'float.py' 在主文件中,即“main.py” 希望它有效!!

提前谢谢大家。

问候, 风险投资