用选项导入另一个py文件



我有main.pynewcanmonitor.py,我想用vcan0选项导入newcanmonitor.py,因为当我单独使用newcanmonitor.py时,我在终端中输入python newcanmonitor.py vcan0

main.py

import newcanmonitor ???  <-- is there any way to use an option 'vcan0' here?

newcanmonitor.py

def read_bus(bus_device):
"""Read data from `bus_device` until the next newline character."""
message = bus.recv(0.2)
while True:
if message:
break
message = bus.recv(0.2)
try:
string = "{}:ID={}:LEN={}".format("RX", message.arbitration_id, message.dlc)
for x in range(message.dlc):
string += ":{:02x}".format(message.data[x])
except Exception as e:
print(e)
return string

提前感谢大家

您可以在导入模块之前尝试使用sys.argv.append("vcan0")

import sys
sys.argv.append("vcan0")
import newcanmonitor

但我不知道是否会与模块工作,因为模块将导入sys,它可以获得新的sys.argv没有"vcan0"


但是我宁愿使用if __name__ == "__main__"在直接执行和导入时以不同的方式运行代码。

这样,独立版本可以从sys.argv获取值并发送给函数-read_bus(sys.argv)-main.py可以导入函数并直接运行read_bus("vcan0")

newcanmonitor.py

def read_bus(bus_device):
"""Read data from `bus_device` until the next newline character."""
message = bus.recv(0.2)
while True:
if message:
break
message = bus.recv(0.2)
try:
string = "{}:ID={}:LEN={}".format("RX", message.arbitration_id, message.dlc)
for x in range(message.dlc):
string += ":{:02x}".format(message.data[x])
except Exception as e:
print(e)
return string
if __name__ == "__main__":
import sys
read_bus(sys.argv[1])

main.py

import newcanmonitor
newcanmonitor.read_bus("vcan0")

相关内容

  • 没有找到相关文章

最新更新