【发布时间】:2023-09-13 03:40:02
【问题描述】:
我正在使用 python 的 argparse 模块来处理命令行参数。我在解码实际的 unicode 文件名/文件路径时遇到问题。这是我的代码:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-f", dest="file", default="", help="file to be processed")
options = parser.parse_args()
main(options)
def main(options):
detail = options.file.decode(sys.stderr.encoding)
print os.path.exists(detail)
print detail
现在,当我通过 Windows 命令行运行脚本时:
sample.py -f "c:\temp\2-¡¢£¤¥¦§¨©ª«¬®¯°±²³´μ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
结果如下:
c:\temp\2-íóúñѪº¿⌐¬½¼?«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■
False
如您所见,解码后的文件名不同,导致文件存在检查为“False”。
有解决这个问题的想法吗?提前致谢!
【问题讨论】:
-
那是 Python 2 还是 3?
-
@AaronDigulla Python 2(
print语句) -
你可以使用 repr 函数来打印字符串。
-
这不是
argparse问题。这是系统和解释器在sys.argv中为您提供什么的问题。
标签: windows python-2.7 unicode argparse