小编Chr*_*ris的帖子

Python 3 - 十六进制字符串到字节

我正在使用 python 3 并尝试将十六进制字符串转换为字节表示的形式。所以我使用了以下命令:

bytes.fromhex('97ad300414b64c')
Run Code Online (Sandbox Code Playgroud)

我期望的结果是这样的:b'\x97\xad\x30\x04\x14\xb6\x4c''但是得到了b'\x97\xad0\x04\x14\xb6L'。我注意到我做错了什么,但也许是编码问题?

python

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

python 子进程 popen 以不同用户身份执行

python 3.6我正在尝试以不同的用户身份执行命令,popensubprocess它仍然会以调用脚本的用户身份执行(我计划将其称为 root)。我正在使用线程,因此当两个线程并行执行时,不要侵犯用户权限,这一点很重要。

proc = subprocess.Popen(['echo $USER; touch myFile.txt'],
                          shell=True,
                          env={'FOO':'bar', 'USER':'www-data'},
                          stdout=subprocess.PIPE)

Run Code Online (Sandbox Code Playgroud)

上面的例子仍然会用myFile.txt我的user_id 1000

我尝试了不同的方法:

  1. 尝试按照与长时间运行的Python进程不同的用户身份运行子进程中所述,通过复制os.environment并更改用户等
    (注意这是针对python 2)

  2. 按照https://docs.python.org/3.6/library/subprocess.html#popen-constructor中的描述尝试使用start_new_session=True

我的最后一个选择是在命令前加上前缀sudo -u username command,但我认为这不是优雅的方式。

python subprocess python-3.x

3
推荐指数
1
解决办法
6999
查看次数

标签 统计

python ×2

python-3.x ×1

subprocess ×1