问题描述
我正在尝试运行两个简单的独立代码。一个是来电者,另一个是被叫者。
import subprocess
import sys
counter = 300
p = subprocess.Popen([sys.executable,r'D:\analytics\upper_is_called_here.py',str(counter)],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
print("P is",p)
out,err = p.communicate() # This will get you output
import sys
a = sys.argv[1]
f = open("test.txt","a")
f.write('Input is: '+str(a)+'\n')
print('Call worked!')
# for i in range(a):
# print('Number is: ',i)
# f.write('Number is: '+str(i)+'\n')
# # time.sleep(2)
f.close()
但是同样的代码,当我从我的 Windows 系统中取出并尝试在 Ubuntu 中运行时,它不起作用并且输出显示为空(这意味着它没有收到来自被调用代码的打印响应),但是在相反,设法返回一个进程 ID,如下所示:P 是
有人遇到过这个问题吗?我该如何解决这个问题?
我的 Ubuntu 风格是:
- 没有可用的 LSB 模块。
- 分销商 ID:Ubuntu
- 描述:Ubuntu 18.04.5 LTS
- 版本:18.04
- 代号:仿生
注意:我遇到过类似的问题,但由于它们缺乏最少的、可重现的代码,因此没有得到正确回答。因此,它实际上不可能与其他 Q 重复。
解决方法
Python 文件的路径是 Windows 路径。您应该 public partial class Pular : Form
{
[DllImport("user32.dll")]
static extern short GetAsyncKeyState(Keys vKey);
[DllImport("user32.dll")]
static extern void mouse_event(int a,int b,int c,int d,int swed);
int m3DOWN = 0x0020;
int m3UP = 0x0040;
public Pular()
{
InitializeComponent();
btnDesativar.Enabled = false;
}
private void Pular_Load(object sender,EventArgs e)
{
}
void jump()
{
while (true)
{
if (GetAsyncKeyState(Keys.Space) <0)
{
mouse_event(m3DOWN,0);
Thread.Sleep(9);
mouse_event(m3UP,0);
Thread.Sleep(9);
}
Thread.Sleep(10);
}
}
private void btnAtivar_Click(object sender,EventArgs e)
{
btnAtivar.Enabled = false;
btnDesativar.Enabled = true;
Thread jp = new Thread(jump) { IsBackground = true };
jp.Start();
}
private void btnDesativar_Click(object sender,EventArgs e)
{
btnDesativar.Enabled = false;
btnAtivar.Enabled = true;
}
改为创建路径
.toLowerCase()
请注意,您可能需要稍微更改 Linux 路径,因为我不知道您在 Ubuntu 系统中放置文件的位置