Windows系统中,Python环境open()函数打开文件,
地址参数传入路径单斜杆分隔,但运行时跳出告警无效参数,参数带双斜杠:
a = 'subaccount'
b = '2021-06-24 13:43:00'
g_json_dir = r'E:\TEMP'
json_path = g_json_dir + r'\%s_%s.json' % (a, b)
with open(json_path , "w", encoding='utf-8') as f:
json.dump(‘111111’, f, ensure_ascii=False)
感觉路径斜杠问题不定期会出现,但用单斜杠的写法大部分时候又可以,究竟问题在哪里。
# json_path = g_json_dir + r'\%s.json' % (a) # 正常
# json_path = g_json_dir + r'\%s_%s.json' % (a, '1111111') # 正常
# json_path = g_json_dir + r'\%s.json' % (str(b)) # 正常
# json_path = g_json_dir + r'\%s_%s.json' % ('1111111', '11111') ## 正常
# json_path = g_json_dir + r'\%s_%s.json' % (a, '111111111') # 正常
# json_path = g_json_dir + r'\%s_%s.json' % (a, a) # 正常
# json_path = g_json_dir + r'\%s.json' % (a + a) # 正常
# json_path = g_json_dir + r'\%s.json' % (a+ b) # 斜杠\变双斜杠\\
json_path = g_json_dir + r'\%s_%s.json' % (a, b) # 斜杠\变双斜杠\\
# json_path = g_json_dir + r'\%s_%s.json' % (b, '11111') # 斜杠\变双斜杠\\
# json_path = g_json_dir + r'\%s_%s.json' % (str(b), '11111') # 斜杠\变双斜杠\\
# json_path = g_json_dir + r'\%s_%s.json' % ('1111', str(b)) # 斜杠\变双斜杠\\
#
尝试多种组合,发现只要路径中加入b,均出现路径斜杠变双斜杠
问题应该是在字符串b,是不是字符串b中的内容有问题?
先把空格改掉试试
run = str(b).replace(' ', '_')
# json_path = g_json_dir + r'\%s.json' % (sub_account + run_time)
json_path = g_json_dir + r'\%s_%s.json' % (sub_account, run_time)
仍然会把斜杠改成双斜杠:
把:改成_,试试
run = str(b).replace(':', '_')
# json_path = g_json_dir + r'\%s.json' % (sub_account + run_time)
json_path = g_json_dir + r'\%s_%s.json' % (sub_account, run_time)
总算保存成功了,路径参数正常
总结:
windows文件名称中不能包含 \ / : * ? " < > |
Linux文件名除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,使用某些特殊字符并不是明智之举。例如,在命名时应避免使用 <、>、?、* 和非打印字符等。如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。