草庐IT

SYS_SETPGID

全部标签

python - 为什么 `subprocess.check_call(..., stderr=sys.stdout)` 在 Python 2.6 中失败?

Python2.6.9(unknown,Mar72016,11:15:18)[GCC5.3.0]onlinux2Type"help","copyright","credits"or"license"formoreinformation.>>>importsys>>>importsubprocess>>>subprocess.check_call(['echo','hi'],stderr=sys.stdout)echo:writeerror:BadfiledescriptorTraceback(mostrecentcalllast):File"",line1,inFile"/usr/li

python 2.7 : reload(sys) disables error messages and print in Windows

我正在制作一个脚本,要求我将编码格式更改为“UTF-8”。我在Stachoverflow上找到了一个主题,说我可以使用:importsysreload(sys)sys.setdefaultencoding('utf-8')它在OSX10.8(也可能是更早的版本)中运行良好,但在WindowsXP和Windows7(也可能是Vista和8)中它会禁用解释器中的所有反馈。脚本仍在运行,但我无法打印任何内容或查看是否有任何问题。有没有办法修补当前代码,或者有其他方法来更改编码? 最佳答案 可能发生在你身上的事情与空闲有关,因为空闲用它自己

python - Argparse 和 ArgumentDefaultsHelpFormatter。选择 sys.stdin/stdout 作为默认值时的默认值格式

我对使用argparse的ArgumentDefaultsHelpFormatter类格式化程序很感兴趣(我的程序有几个子命令)。默认情况下,输入和输出参数分别设置为sys.stdin和sys.stdout。但是,这两个参数的格式可能会让用户有点困惑(例如(默认值:',mode'r'at0x10028e0c0>)。有没有一种方法可以专门轻松地更改这两个参数的输出格式以获得像“默认:STDIN”或“默认:STDOUT”之类的东西?谢谢importsysimportargparseparser=argparse.ArgumentParser(prog='PROG',formatter_cl

Windows 上的 Python 2.7,所有多处理示例的 "assert main_name not in sys.modules, main_name"

简单的代码如下:frommultiprocessingimportProcess,freeze_supportdeffoo():print'hello'if__name__=='__main__':freeze_support()p=Process(target=foo)p.start()它在使用Python3.3的Linux或Windows上运行良好,但在使用Python2.7的Windows上运行失败。Traceback(mostrecentcalllast):File"",line1,inFile"c:\Python27\lib\multiprocessing\forking.p

python - 使用 sys.argv[1] 时为 "list index out of range"

这个问题在这里已经有了答案:Whatdoes"sys.argv[1]"mean?(9个回答)关闭4个月前。我正在编写一个简单的Python客户端和服务器,它可以很好地在我的代码中传递服务器地址,但是,我希望用户能够输入服务器地址,如果不正确则抛出错误。当我有下面的代码时,我从终端“列表索引超出范围”收到错误消息。server=(sys.argv[1])serverAdd=(server,'65652')#serveraddressandportnumber谁能帮我解决这个问题。当我在python中运行我的客户端程序时,我希望能够输入一个地址来连接并将其存储在服务器中。我通过键入prog

python - 将目录添加到 Python sys.path,以便每次使用 Python 时都包含它

目前,当尝试引用一些库代码时,我在我的python文件的顶部这样做:importsyssys.path.append('''C:\code\my-library''')frommy-libraryimportmy-library然后,只要session处于事件状态,my-library就会成为sys.path的一部分。如果我开始一个新文件,我必须记得再次包含sys.path.append。我觉得一定有更好的方法来做到这一点。如何使my-library可用于我的Windows机器上的每个python脚本,而不必每次都使用sys.path.append? 最佳答

python - 处理来自 sys.exc_info() 的回溯对象时的适当注意和安全

我知道sys.exc_info文档说在处理回溯对象时要小心,但我仍然不确定某些情况下的安全性或不安全性。此外,文档说“警告:不要这样做!”,紧接着是“注意:实际上,没问题”,这让我更加困惑。在任何情况下,文档和“Whyisthereaneedtoexplicitlydeletethesys.exc_info()tracebackinPython?”(AlexMartelli的回答)似乎都暗示其唯一引用分配给它们的回溯值的局部变量会导致问题。这留给我几个问题:在这种情况下,“局部变量”到底是什么意思?我正在为术语而苦苦挣扎,但是:这是否意味着仅在函数中创建的变量,或者也由函数参数创建的变

python - 如何在pycharm中全局管理sys.path

我有一堆单元测试,它们不是从/python2.7/site-packages/而是从一个完全不同的目录导入内容。所以我所做的是在每个测试文件中使用sys.path.append进行一些猴子修补,让我的Python看到我需要的东西。有没有一种方法可以为整个Pycharm项目全局附加sys.path而无需处理每个文件?更新:设置默认工作目录没有帮助。例如,如果我将工作目录设置为/Users/1111/_projects/_empty_dir/,如下所示:然后运行这个importsysforpinsys.path:printp我看到的是这个/Users/1111/.virtualenvs/b

Python sys.modules 包含一个尚未导入的模块

我试图了解加载模块与导入模块之间的区别(如果有的话)。我正在使用Python2.7.3,并且只是从命令行运行Python。如果我执行:importsyssys.modules例如,我得到一个包含os的列表。文档说sys.modules是“已加载”模块的列表。但是,如果我尝试运行类似os.environ的程序,我会收到一个NameError,它告诉我os未定义。但是,如果我随后运行importos,问题就解决了。谁能解释为什么在我实际导入模块之前os存在于sys.modules中? 最佳答案 导入模块和加载模块的区别在于将什么放入当前

python - 为笔记本设置默认的 sys.path

我的所有.py文件都在一个文件夹脚本中,我所有的IPython笔记本都在一个名为Notebook的文件夹中。每个笔记本文件对脚本上的一个或多个文件有多个交叉依赖。在每个笔记本顶部都有sys.path.append似乎很麻烦,我希望有一种方法可以添加默认查找路径,就像我们将PYTHONPATH添加到.bash_profile.现在我执行以下操作:importsyssys.path.append(")importDeriveFinalResultSetasdrs我希望有一个可以执行以下操作的设置:importDeriveFinalResultSetasdrs 最