下面是我使用的解决方案。
在subprocess模块中,我使用带参数Popen的函数从python3调用python2脚本并收集stdout。(这意味着所有内容都已打印到控制台。)
这是我想在python3中调用的python2代码:#readying.py
import axographio #this is the python2 package
import os #specific to the problem of reading data
import sys #needed to use arguments from the command line
if __name__=='__main__': #when y
path = sys.argv[1]
filename = sys.argv[2]
os.chdir(path)
file = axographio.read(filename)
# print 'done reading files'
data = file.data
no_measurements = len(data)
measurement_len = len(data[0])
print(no_measurements)
print(measurement_len)
for i, name in enumerate(file.names):
print(name)
for i in range(no_measurements):
for j in range(measurement_len):
print(data[i][j])
print('next measurement')
#this acts as a seperator when reading the data in python3, anything that cannot be converted to a float works
此代码所做的只是从commad行获取参数。(使用sys模块,它们可以以python2 script.py arg1 arg2 arg2的形式传递给命令行中的.py脚本。
reading.py的输出是使用print语句给出的。请注意,我单独打印每个数据,以避免输出被截断。这样,输出就是python2调用的标准输出stdout。在
Python3的密码是
^{pr2}$
它的作用是使用subprocess模块作为shell命令python2 reading.py path filename执行。如上所述,此调用的stdout是其print语句的输出。这些是用“UTF-8”编码的bytes对象。使用decode方法,可以将它们转换为字符串对象,然后使用float等函数在类型中进行更改。(这也是为什么分开打印所有内容是有用的,因为必须扫描一个字符串来查找数组或数字是相当烦人的)在readying.py中,数据在被打印时被明确地分开,这样一旦被读取,就可以很容易地对它们进行结构化。在
标签:python3中的axographio读取python3的axographio文件