我有一个从stdin获取输入的python程序.现在,我要编写另一个程序并将其作为子进程调用,这样每次启动此子进程时,它应该从另一个文本文件读取数据并将其写入stdin,然后我的主程序从stdin读取并使用它.
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)
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"..所以..每次我调用函数读一个字符应该读取文件中的下一个字符.这就是事情!唷!请帮助我,我有一项工作要做!提前致谢
我想要一个脚本,可以在其中粘贴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中,如果我做这样的事情:
for tz in pytz.common_timezones_set :
print tz
Run Code Online (Sandbox Code Playgroud)
结果是用英语写的,但如果我想用西班牙语或阿拉伯语怎么样呢?
在Minecraft中,我希望找到一种方法来自动阅读聊天,如下图所示

为了将虚拟商店中进行的事务记录到PostgreSQL数据库中.最好使用Python.我不拥有Minecraft服务器.
我的计划是找到一种直接读取Minecraft服务器发送的数据包的方法(首选可靠性,但难度不大),或者作为备份计划可能会弄清楚如何屏蔽文本.我找到了一些资源,可以让我将字体更改为monospaced,这将提供更可靠的字体读取方式,我相信在屏幕上为每个字符创建完美一致的位置.我可以面对一个接近黑色但不完全的方向,但不愿意这样做.如上图所示,您可以看到有许多不同颜色的字体可供使用.
即使在如上所述减少它之后,我仍然不确定如何使用python将其转换为文本.
关于我的方法的任何提示?有关如何读取来自服务器的数据包的任何提示?有关从屏幕上抓取文字的提示吗?
我想使用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中查看,并运行正确的可执行文件?
壳牌算法说:
评估是在固定宽度的整数中完成的,不检查溢出,但除以 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 类型的整数?
我试图将字符串转换为日期时间对象.我从新闻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"部分?
我似乎在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) 我正在尝试编写一个脚本,该脚本必须对某些bash命令进行大量调用,解析并处理输出,最后给出一些输出。
我正在使用subprocess.Popen和subprocess.call
如果我理解正确,那么这些方法将产生一个bah进程,运行命令,获取输出,然后终止该进程。
有没有办法让bash进程在后台连续运行,然后python调用可以直接进入该进程?这就像是bash作为服务器运行,而python调用了它。
我觉得这会优化通话,因为没有bash流程设置和拆卸。还是没有任何性能优势?
我正在尝试为倒数计时器创建一个代码保持原位:这样每行都会覆盖前一行.这是我到目前为止:
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 ×9
bash ×3
datetime ×2
subprocess ×2
escaping ×1
limit ×1
linux ×1
localization ×1
minecraft ×1
numpy ×1
pandas ×1
performance ×1
popen ×1
python-3.x ×1
python-idle ×1
pytz ×1
rfc2822 ×1
stdin ×1
text ×1
timezone ×1
windows ×1