相关疑难解决方法(0)

Python从命令行参数或stdin读取

在Python中编写面向文本的命令行程序时,我经常想要读取命令行上传递的所有文件,或者(XOR)标准输入(如Unix cat,或Perl <>).所以,我说

if len(args) == 0:  # result from optparse
    input = sys.stdin
else:
    input = itertools.chain(*(open(a) for a in args))
Run Code Online (Sandbox Code Playgroud)

这是Pythonic这样做的方式,还是我错过了图书馆的某些部分?

python stdin input command-line-arguments

9
推荐指数
1
解决办法
2万
查看次数

如何从PHP传递和接收参数内部运行Ruby/Python脚本?

我需要将HTML转换为等效的Markdown结构化文本.

OBS:使用PHP和Python快速而清晰地完成此操作.

由于我使用PHP编程,有些人表示Markdownify可以完成这项工作,但不幸的是,代码没有更新,实际上它没有用.在sourceforge.net/projects/markdownify有一个"注意:不支持 - 你想维护这个项目吗?联系我!Markdownify是一个用PHP编写的HTML到Markdown转换器.看它是html2text.php的继承者,因为它有更好的设计,更好的性能和更少的角落情况."

根据我的发现,我只有两个不错的选择:

  • Python:Aaron Swartz的html2text.py

  • Ruby:Singpolyma的html2markdown.rb,基于Nokogiri

所以,从PHP,我需要传递HTML代码,调用Ruby/Python脚本并接收输出.

(顺便说一句,一个民众在这里提出了一个类似的问题("如何从php调用ruby脚本?"),但我的案例没有实用信息).

按照Tin Man的提示(下图),我得到了这个:

PHP代码:

$t='<p><b>Hello</b><i>world!</i></p>';
$scaped=preg_quote($t,"/");
$program='python html2md.py';

//exec($program.' '.$scaped,$n); print_r($n); exit; //Works!!!

$input=$t;

$descriptorspec=array(
   array('pipe','r'),//stdin is a pipe that the child will read from
   array('pipe','w'),//stdout is a pipe that the child will write to
   array('file','./error-output.txt','a')//stderr is a file to write to
);

$process=proc_open($program,$descriptorspec,$pipes);

if(is_resource($process)){
    fwrite($pipes[0],$input);
    fclose($pipes[0]);
    $r=stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    $return_value=proc_close($process);
    echo "command returned $return_value\n";
    print_r($pipes);
    print_r($r);
}
Run Code Online (Sandbox Code Playgroud)

Python代码:

#! /usr/bin/env python
import html2text
import …
Run Code Online (Sandbox Code Playgroud)

html php ruby python markdown

8
推荐指数
2
解决办法
1万
查看次数

如何在Python中逐行读取文件(或stdin)而不是等待读取整个文件

我们在磁盘中有几个巨大的文件(大于RAM的大小).我想在python中逐行读取它们并在终端输出结果.我已经完成了[1]和[2],但我正在寻找不等到整个文件被读入内存的方法.

我将使用这两个命令:

cat fileName | python myScript1.py
python myScript2.py fileName
Run Code Online (Sandbox Code Playgroud)

[1] 你如何从Python中读取stdin? [2] 如何在python中编写unix过滤器?

python filter

7
推荐指数
1
解决办法
9524
查看次数

Python命令行输入?

可能重复:
你如何读取python中的stdin

什么是从命令行获取信息的最佳/最简单的方法.

例如,我将运行一堆shell脚本,它们返回:

200 SOLUTIONS_REVISION 
or 
400 SOLUTIONS_REVISION
Run Code Online (Sandbox Code Playgroud)

在我运行每个脚本之后.我需要在python中捕获这些"返回"的字符串作为字符串(以检查它是否通过(200)或失败(400).最好的方法是什么(我是一个完整的新的python和我的搜索似乎主要是返回命令行争论.

谢谢(最好也是python 2.x)

python

5
推荐指数
1
解决办法
2849
查看次数

python:在连续循环中使用键盘输入?

操作系统是 Redhat-c​​lone Linux 发行版,我使用的是 python-2.x。

一般代码结构为:

# stuff is initialized
while True:
    # read stuff from remote devices
    # process data
    # maybe do stuff, or maybe just watch
    os.system("clear")
    # display status of remote devices
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

我想让用户通过按各种键来驱动程序。例如“按 S 正常关闭远程设备,按 K 杀死,按 R 重新启动”。所有这些操作都需要在大循环内发生——我的伪代码中的“也许做些事情,或者只是看”注释。如果没有按下任何键,程序应该一直循环。

我不确定如何在 while True: time.sleep(1) 循环的上下文中完成键盘阅读。

python

5
推荐指数
1
解决办法
8455
查看次数

Python在子进程中使用STDIN

所以我有一个程序,在"主"过程中我触发一个新的Process对象(我想要的)是从STDIN读取行并将它们附加到Queue对象.

基本上,基本的系统设置是有一个"命令获取"过程,用户将输入命令/查询,我需要将这些查询提供给在不同进程中运行的其他子系统.我的想法是通过其他系统可以读取的多处理队列来共享这些.

我所拥有的(专注于获取命令/查询)基本上是:

def sub_proc(q):
    some_str = ""
    while True:
        some_str = raw_input("> ")
        if some_str.lower() == "quit":
            return
        q.put_nowait(some_str)

if __name__ == "__main__":
    q = Queue()
    qproc = Process(target=sub_proc, args=(q,))
    qproc.start()
    qproc.join()

    # now at this point q should contain all the strings entered by the user
Run Code Online (Sandbox Code Playgroud)

问题是我得到:

Process Process-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/home/blah/blah/blah/blah.py", line 325, in sub_proc
    some_str = raw_input("> …
Run Code Online (Sandbox Code Playgroud)

python stdin process

5
推荐指数
2
解决办法
4528
查看次数

将 bash 输出重定向到 python 脚本

我正在使用zbarimg扫描条形码,我想将输出重定向到 python 脚本。如何重定向以下命令的输出:

zbarimg code.png
Run Code Online (Sandbox Code Playgroud)

python 脚本,脚本应该是什么样的?

我尝试了以下脚本:

#!/usr/local/bin/python
s = raw_input()
print s
Run Code Online (Sandbox Code Playgroud)

我通过发出以下命令将其设为可执行文件:

chmod +x in.py
Run Code Online (Sandbox Code Playgroud)

比我跑了以下:

zbarimg code.png | in.py
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但我想不出其他的办法了!

python bash

5
推荐指数
1
解决办法
6031
查看次数

将 Image 对象作为参数从 C# 传递给 Python

我想将图像对象从我的 c# 项目传递给我的 python 脚本,但是根据我的理解,无论参数中有什么,它都被认为是字符串,而且当我尝试type(passedImage)在 python 中时,它会将它标识为字符串,即使我尝试放置一个数字而不是图像变量。

ProcessStartInfo start = new ProcessStartInfo();
            start.FileName = @"C:\Python\Python36\python.exe";
            start.Arguments = string.Format("{0} {1}", @"C:\OCRonImage2.py", image );
            start.UseShellExecute = false;
            start.RedirectStandardOutput = true;
            start.CreateNoWindow = true;
            using (Process process = Process.Start(start))
            {

            }
Run Code Online (Sandbox Code Playgroud)

c# python parameter-passing

5
推荐指数
1
解决办法
1170
查看次数

蟒蛇标准输入

可能的重复:
你如何从 python 中的 stdin 读取

大家好,
我是python的新手。我想知道如何从标准输入中获取数据,例如 c++ 中的 getline 等,以便从终端/控制台我可以使用文本文件作为 python 脚本的输入。

谢谢

python input

4
推荐指数
1
解决办法
3284
查看次数

如何让Unity中的c#与Python通信

我正在为 Unity 游戏制作 Q-Learning 机器人,机器人使用 Python,游戏使用 C#,如何让两个程序交换任何类型的数据(即整数字符串数组等)?任何使 Python 和 C# for Unity 通信的方法都可以解决我的问题,我可以将任何内容集成到我的代码中。

编辑:另一个问题和我的一样,但答案并没有从 Python 方面解释要做什么。

我的 Python 版本是 3.6。

c# python unity-game-engine

4
推荐指数
1
解决办法
4093
查看次数