如何在不运行导入脚本的情况下在另一个python脚本中使用变量?

时间:2018-05-22 05:11:26

标签: python

我有两个脚本,我正在积极地用于编程类。我的代码评论很好,我的老师更喜欢外部资源,因为有很多不同的解决方案。

虽然解决了实际问题,我需要创建一个带套接字的服务器(可以工作),然后允许另一台计算机使用单独的脚本连接到它(也可以使用)。问题是在建立连接之后。我希望这两个人能够来回发送消息。它发送的方式必须是字节形式,我如何设置,但返回的字节是不可能读取的。我可以解码它,但我希望它可以方便地位于命令提示符中。我尝试将主脚本(Connection.py)导入到辅助脚本(Client.py)中,然后运行主脚本。有什么方法可以阻止它运行吗?

这是我的主要脚本(创建服务器的脚本)

#Import socket and base64#
import socket
import base64

#Creating variable for continuous activity#
neverland = True

#Create socket object#
s = socket.socket()
print ("Socket created") #Just for debugging purposes#

#Choose port number for connection#
port = 29759 #Used a random number generator to get this port#

#Bind to the port#
s.bind((' ', port))
print ("Currently using port #%s" %(port)) #Just for debugging purposes#

#Make socket listen for connections#
s.listen(5)
print ("Currently waiting on a connection...") #Just for debugging purposes#

#Loop for establishing a connection and sending a message#
while neverland == True:

    #Establish a connection#
    c, addr = s.accept()
    print ("Got a connection from ", addr) #Just for debugging purposes#

    #Sending custom messages to the client (as a byte)#
    usermessage = input("Enter your message here: ")
    usermessage = base64.b64encode(bytes(usermessage, "utf-8"))
    c.send(usermessage)

    #End the connection#
    c.close()

这是我的辅助脚本(连接到主要脚本的那个)

#Import socket module#
import socket
import Connection

#Create a socket object#
s = socket.socket()         

#Define the port on which you want to connect#
port = 29759               

#Connect to the server on local computer#
s.connect(('127.0.0.1', port))

#Receive data from the server#
print (s.recv(1024))
usermessage = base64.b64decode(str(usermessage, "utf-8"))
print (usermessage)

#Close the connection#
s.close()  

在命令提示符下运行它们时,会发生以下错误:

enter image description here

它尝试再次运行主脚本并获取错误,我该如何阻止它?

1 个答案:

答案 0 :(得分:0)

您通常实现此目的的方法是在读取脚本时不执行任何操作。即你只需要定义你的函数,类和变量,如果这个脚本是直接调用的,你可以这样调用它并引用适当的入口点。 E.g:

myvar = "world"
def main():
    print("Hello", myvar)
if __name__ == "__main__":
    main()

通过这种方式,您可以调用脚本python example.py或从另一个脚本中导入脚本并在需要时使用内容:import example; print(example.myvar)

您也可以,这与上面不相互排斥,重构您的脚本并拥有一个包含公共/共享定义的文件,这些文件将导入并由您的两个脚本使用。