我想使用Hindsight分析系统(Windows)上每个用户的默认Chrome数据位置。 default_directory的字符串串联有效。但是循环中的两个变量(default_directory和user)不起作用。我正在编写一个使用Carbon Black API的脚本。
for user in users_list:
try:
default_directory = os.path.normpath('C:\\Users\\' + user + '\\AppData\\Local\\Google\\Chrome\\User Data\\Default') # String concatenation
session.create_process(r'C:\\Windows\\cbapi\\hindsight.exe -i "{default_directory}" -o "hindsight_{user}"', wait_timeout=600)
except Exception: pass
提前感谢您的帮助!
答案 0 :(得分:2)
如果使用的是原始字符串(如引号前的r
),则不应使用双反斜杠;如果要将变量嵌入字符串中,则不应使用f字符串。
更改:
session.create_process(r'C:\\Windows\\cbapi\\hindsight.exe -i "{default_directory}" -o "hindsight_{user}"', wait_timeout=600)
to(如果您使用的是Python 3 +):
session.create_process(fr'C:\Windows\cbapi\hindsight.exe -i "{default_directory}" -o "hindsight_{user}"', wait_timeout=600)
或者,如果您使用的是不支持f-string的Python 2.7,请改用字符串格式化程序:
session.create_process(r'C:\Windows\cbapi\hindsight.exe -i "{}" -o "hindsight_{}"'.format(default_directory, user), wait_timeout=600)
答案 1 :(得分:0)
我认为您忘记了字符串前面的格式说明符'f'。
a = 'some_variable'
out_string = f'this is {a}' # Notice the 'f'
以下内容将起作用:
for user in users_list:
try:
default_directory = os.path.normpath('C:\\Users\\' + user + '\\AppData\\Local\\Google\\Chrome\\User Data\\Default') # String concatenation
session.create_process(fr'C:\\Windows\\cbapi\\hindsight.exe -i "{default_directory}" -o "hindsight_{user}"', wait_timeout=600)
except Exception: pass