小编jfs*_*jfs的帖子

Python - 写入stdin的子进程,以便主程序可以从stdin读取它

我有一个从stdin获取输入的python程序.现在,我要编写另一个程序并将其作为子进程调用,这样每次启动此子进程时,它应该从另一个文本文件读取数据并将其写入stdin,然后我的主程序从stdin读取并使用它.

out.py:

from subprocess import Popen, PIPE, STDOUT

import os

import sys

def read():
    p = Popen(['python', 'in.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)

    out = p.communicate()

    print out[0]

def main():
    read()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

in.py:

import sys,os

import subprocess

def main():

    f = open("ad.txt","r")

    for line in f:
        print line

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是in.py读取整个文件并打印到我不想要的STDOUT中,而不应该只传达一个字符.如果ad.txt是这样的:

asdfgh
Run Code Online (Sandbox Code Playgroud)

我应该"a"然后"s"然后"d"那么"f"..所以..每次我调用函数读一个字符应该读取文件中的下一个字符.这就是事情!唷!请帮助我,我有一项工作要做!提前致谢

python stdin

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

用于将Windows路径更改为Unix路径的Python脚本

我想要一个脚本,可以在其中粘贴Windows路径作为参数,然后该脚本将路径转换为Unix路径并使用nautilus打开路径。

我希望能够如下使用脚本:

mypythonscript.py \\thewindowspath\subpath\
Run Code Online (Sandbox Code Playgroud)

该脚本当前如下所示:

import sys, os

path = "nautilus smb:"+sys.argv[1]

path = path.replace("\\","/")

os.system(path)
Run Code Online (Sandbox Code Playgroud)

我几乎可以工作了:)问题是我必须在参数周围添加'...,如下所示:

mypythonscript.py '\\thewindowspath\subpath\'
Run Code Online (Sandbox Code Playgroud)

任何知道我如何编写允许该参数的脚本的人都不能使用',...,例如:

mypythonscript.py \\thewindowspath\subpath\
Run Code Online (Sandbox Code Playgroud)

编辑:我想我还必须补充一点,问题是没有',则参数中的\被视为转义字符。该解决方案不一定必须是python脚本,但我希望(在Linux中)能够仅将Windows路径作为脚本的参数粘贴。

python linux bash escaping

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

时区名称以当地语言显示

有没有一种方法可以用另一种语言检索时区名称?

在Python中,如果我做这样的事情:

for tz in pytz.common_timezones_set :
 print tz
Run Code Online (Sandbox Code Playgroud)

结果是用英语写的,但如果我想用西班牙语或阿拉伯语怎么样呢?

python timezone localization internationalization pytz

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

自动从Minecraft中读取聊天文本

在Minecraft中,我希望找到一种方法来自动阅读聊天,如下图所示

我的聊天截图

为了将虚拟商店中进行的事务记录到PostgreSQL数据库中.最好使用Python.我不拥有Minecraft服务器.

我的计划是找到一种直接读取Minecraft服务器发送的数据包的方法(首选可靠性,但难度不大),或者作为备份计划可能会弄清楚如何屏蔽文本.我找到了一些资源,可以让我将字体更改为monospaced,这将提供更可靠的字体读取方式,我相信在屏幕上为每个字符创建完美一致的位置.我可以面对一个接近黑色但不完全的方向,但不愿意这样做.如上图所示,您可以看到有许多不同颜色的字体可供使用.

即使在如上所述减少它之后,我仍然不确定如何使用python将其转换为文本.

关于我的方法的任何提示?有关如何读取来自服务器的数据包的任何提示?有关从屏幕上抓取文字的提示吗?

python text screen-scraping minecraft

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

Popen具有冲突的可执行文件/路径

我想使用Popen从我的Python脚本中调用ImageMagick中的"convert"实用程序,如下所示:

Popen(["convert", input_path, "-flop", output_file_path])
Run Code Online (Sandbox Code Playgroud)

(上面的例子只是水平反转图像)

问题是,当我在Windows中运行脚本时,它错误地调用convert.exeWindows附带的实用程序将FAT分区转换为NTFS!(位于\ Windows\system32)

现在,如果我在system32以外的任何目录中随机打开命令提示符,并键入"convert",它会正确运行ImageMagick可执行文件.所以,这意味着Popen会自动查看system32.如何让它不在system32中查看,并运行正确的可执行文件?

python windows subprocess popen

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

bash中固定宽度整数的宽度是多少?

壳牌算法说:

评估是在固定宽度的整数中完成的,不检查溢出,但除以 0 会被捕获并标记为错误。

例子:

$ echo $(( 1 << 32 ))
4294967296
$ echo $(( (1 << 64) - 1 ))
0
Run Code Online (Sandbox Code Playgroud)

bash中shell算术的整数限制是什么?

@rici指出的是POSIX壳保证符号长整数范围(如由ISO C定义):

-2**31+1 to +2**31-1
Run Code Online (Sandbox Code Playgroud)

@约翰Zwinck指出bash源代码指示intmax_t用于

所有算术都作为intmax_t整数完成,不检查溢出

bash 是否在其文档中保证它使用intmax_t或其他一些 C 类型的整数?

bash limit

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

将字符串转换为datetime对象

我试图将字符串转换为日期时间对象.我从新闻Feed获得的字符串采用以下格式:"星期四,2014年10月16日01:16:17 EDT"

我尝试使用datetime.strptime()来转换它.即

datetime.strptime('Thu, 16 Oct 2014 01:16:17 EDT','%a, %d %b %Y %H:%M:%S %Z')
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

回溯(最近一次调用最后一次):
  文件"",第1行,在datetime.strptime('星期四,2014年10月16日01:16:17 EDT','%a,%d%b%Y%H:%M: %S%Z')
  文件"C:\ Anaconda\lib_strptime.py",第325行,在_strptime(data_string,format)中)
ValueError:时间数据'星期四,2014年10月16日01:16:17 EDT'格式不匹配'%a,%d%b%Y%H:%M:%S%Z'

但是,如果我尝试没有"EDT"的字符串,它就可以了.即

datetime.strptime('Thu, 16 Oct 2014 01:16:17','%a, %d %b %Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解析"EDT"部分?

python datetime rfc2822

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

大熊猫时间戳与日期时间的缓慢表现

我似乎在pandas.Timestamp与python常规datetime()对象上遇到意外缓慢的算术运算性能.
以下是一个基准测试:

import datetime
import pandas
import numpy

# using datetime:
def test1():
    d1 = datetime.datetime(2015, 3, 20, 10, 0, 0)
    d2 = datetime.datetime(2015, 3, 20, 10, 0, 15)
    delta = datetime.timedelta(minutes=30)

    count = 0
    for i in range(500000):
        if d2 - d1 > delta:
            count += 1

# using pandas:
def test2():
    d1 = pandas.datetime(2015, 3, 20, 10, 0, 0)
    d2 = pandas.datetime(2015, 3, 20, 10, 0, 15)
    delta = pandas.Timedelta(minutes=30)

    count = 0
    for i in range(500000):
        if …
Run Code Online (Sandbox Code Playgroud)

python performance datetime numpy pandas

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

在python中替代子流程

我正在尝试编写一个脚本,该脚本必须对某些bash命令进行大量调用,解析并处理输出,最后给出一些输出。

我正在使用subprocess.Popen和subprocess.call

如果我理解正确,那么这些方法将产生一个bah进程,运行命令,获取输出,然后终止该进程。

有没有办法让bash进程在后台连续运行,然后python调用可以直接进入该进程?这就像是bash作为服务器运行,而python调用了它。

我觉得这会优化通话,因为没有bash流程设置和拆卸。还是没有任何性能优势?

python bash subprocess

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

回车不在IDLE工作?

我正在尝试为倒数计时器创建一个代码保持原位:这样每行都会覆盖前一行.这是我到目前为止:

import time

def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timeformat = "{:02d}:{:02d}".format(mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1
    print("That's the end! You lose...\n\n\n\n\n")
    exit()

countdown(10)
Run Code Online (Sandbox Code Playgroud)

但是,输出是:

00:10
00:09
00:08
...
00:00
That's the end! You lose...
Run Code Online (Sandbox Code Playgroud)

为什么回车似乎不起作用?

python python-idle python-3.x

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