0

Linuxでこの行が正常に機能しています:

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

wkhtmltopdfWindowsではできません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/ [Error 2] El sistema no puede hallar el archivo especificado

つまり、システムは指定されたファイルを見つけることができません。

ポペンラインのあれ

4

3 に答える 3

2

ファイル パスを単純な文字列として扱わず、Python ライブラリ クラスを使用してファイル パスをパスとして操作します。この場合、os.path.join

input_file = os.path.join( settings.FILE_PATH, my_input.html)
于 2012-07-05T23:37:10.250 に答える
1

一般に、パスを扱うときは生の文字列を使用してみてください..つまり、rパス名の前に a を追加します。例えば、

my_path = 'c:\test\bob`

より良い

my_path = r'c:\test\bob`

\tパス指定のand\bがあなたの興味に反して解釈されるのを防ぐためです。

また、特定の OS で使用されるパス区切り文字 ( os.sep )に関する OS 固有の関数/情報、およびjoin()関数などを含む os.pathモジュールを見てください。これは 、文字列を直接使用して指定するよりも望ましいでしょう。 /パスを操作します。

于 2012-07-05T23:34:16.947 に答える
0

use 、 OS依存のパスセパレーター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'
于 2012-07-05T23:48:26.527 に答える