如何在另一个python脚本中使用来自1个python脚本的输入

时间:2018-02-09 17:51:57

标签: python python-3.x

我有3个python脚本文件,比如R.pyN.pyP.py。我使用P运行N,通过调用R函数从R's获取数据。我想在P中的if语句中使用R.py中的输入。我知道我可以更改R.py以接收arg,但我必须更改R.py,因为if不在我调用的函数中。我有办法从input抓取P.py并在R's if中使用它吗?

P.py

import N.py as n

lang = input("Enter the language set?: )
n.agent(name=name, learning=lr, is_remote=is_remote, is_bi=is_bi, batch=batch, 
        no_char_codes=no_char_codes, classes=classes, data_set=lang)

N.py

import R as r

r.retrieve(start, batch_counter, is_remote)

R.py(不完全的):

# Here I want: 
# if lang == 'E' use the below, 
# else use something else.
# but the lang is coming from P.py:
char_codes = {0: 0, "a": 1, "b": 2, "c": 3, "d": 4, "e": 5, "f": 6, "g": 7, 
              "h": 8, "i": 9, "j": 10, "k": 11, "l": 12}

pos_values = {0: 0, "CC": 1, "CD": 2, "DT": 3, "EX": 4, "FW": 5, "IN": 6, 
              "JJ": 7, "JJR": 8, "JJS": 9, "LS": 10}

def retrieve(start, end, is_remote):

3 个答案:

答案 0 :(得分:0)

通过结合python的读写功能,我可以看到答案。制作一个所有3 .py文件都可以查看的文本文档,例如,如果p.py提供" hello"的输入。 (如果要使用字符串文字作为输入)。您可以让p.py程序打开共享文本文档:

#(from p.py file)
input = "hello"
f = open("C:/Users/Directory/shared_file.txt", "w")
f.write(input)
f.close()

#(Then from r.py file)
f = open("C:/Users/Directory/shared_file.txt", "r")
input = f.readline() #or f.read() if its only 1 line with no '\n' or '\t' spacing
f.close()
input = str(input) #just to insure the input read is string for this example
if input == "Hi":
    print("True")
elif input == "Hello":
    print("second True")
else:
    print("False")

此脚本应打印" False"。这就是我的程序相互通信的方式。除此之外,我认为你可以有一个参数,应该预期从一个.py返回另一个.py,但我不知道该怎么做!我希望这有助于您就如何解决问题提供不同的视角

答案 1 :(得分:0)

假设我有3个文件:

<强> mod1.py

condition = input()

<强> mod2.py

import mod1 as m1

<强> mod3.py

import mod2 as m2

如果我想在mod1.py内使用mod3.py中的对象,我只需将mod3.py中的模块链接到:

import mod2 as m2
if m2.m1.condition:
    print(m2.m1.condition)

答案 2 :(得分:0)

我不是说它漂亮或我推荐它,这几乎肯定是一个坏主意 - 但是,如果你绝对不得不......

<强> P.py

import shelve

user_input = "Some user input"
with shelve.open('my_store') as holder:
    holder['input'] = user_input

import N

<强> R.py

import shelve

user_input = None

with shelve.open('my_store') as holder:
    user_input = holder['input']

print(user_input)