在Windows中使用字符串文件名

时间:2012-07-05 23:30:15

标签: python windows wkhtmltopdf

我在linux上运行这条线很好:

input_file = '%s/my_input.html' % settings.FILE_PATH
args =['wkhtmltopdf', input_file, '-']
popen = Popen(args, stdout=PIPE, stderr=PIPE)
Windows中的

wkhtmltopdf无法在linux上完全没有问题。我认为这是斜杠/反斜杠相关的问题,但不知道如何解决它。已经尝试过使用反斜杠和双反斜杠。

有什么建议吗?

所有这些变化都有相同的错误:

"C:\\tmp\\input.html"

"C:\tmp\input.html"

os.path.join("C:\\tmp", "input.html")

'%s%sinput.html' % ('C:\\tmp', os.path.sep)
  

WindowsError at / admin / salidas / pdf / [错误2] El sistema没有puede   hallar el archivo especificado

这意味着系统无法找到指定的文件。

在Popen Line上的那个

3 个答案:

答案 0 :(得分:2)

不要将文件路径视为简单字符串,而是使用python库类将它们作为路径进行操作。在这种情况下os.path.join

input_file = os.path.join( settings.FILE_PATH, my_input.html)

答案 1 :(得分:1)

通常在处理路径时尝试使用原始字符串。即,在路径名之前预先添加r。如,

my_path = 'c:\test\bob`

更好

my_path = r'c:\test\bob`

因为它会阻止路径规范中的\t\b被解释为您的兴趣。

另外,请查看os.path模块及其特定于操作系统的函数/信息,以及在给定操作系统上使用的路径分隔符(os.sep)和join()函数等 - 最好直接使用字符串来指定/操纵路径。

答案 2 :(得分:0)

使用os.path.sep,它会在Windows上返回操作系统依赖路径分隔符(\\和Linux上的/

>>> import os
>>> FILE_PATH='somepath'
>>> input_file='%s%smy_input.html' % (FILE_PATH,os.path.sep)
>>> input_file
'somepath\\my_input.html'   #on windows on linux it returns 'somepath/my_input.html'