8

Iron Pythonでchdirコマンドを実行すると、「パスに不正な文字が含まれています」というエラーが発生します。これは私のコードの実行時に発生していますが、IronPythonコンソールでもこの​​問題があります。コードではosモジュールが機能しないため(既知の問題のようです)、ntモジュールを使用しています。

それを少し遊んでみると、「違法な文字」は実際には単語のビンであることがわかります。以下は、binディレクトリに移動したときにのみエラーが発生することを示すコンソールからのテキストです。

これが例です

>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx')
>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx\Directory')
>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx\Directory\bin')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Illegal characters in path.

さらに悪いことに、まったく別のディレクトリ(binディレクトリさえありません)に移動し、サブディレクトリ「bin」に移動しようとすると、エラーが発生します。

何か案は?

4

3 に答える 3

15

\パス区切り文字もPythonのエスケープ文字です。それらを2倍にするか、さらに良いことに、r''代わりに生のpythonリテラルを使用します。

r'c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx'
'c:\\Users\\xxxxx\\Documents\\Visual Studio 2010\\Projects\\xxx'

たとえば、\nは改行文字であり\t、TABとして解釈されます。特定のケースで\bは、はバックスペースとして解釈されます。

于 2012-09-11T13:59:00.163 に答える
6

\Python文字列のエスケープ文字です。\bはバックスペースであるため、バーフがオンになり\binます。ディレクトリを指定していません。Directory\binディレクトリを指定してDirectory<backspace>inいます。これは有効なパスではなく、有効なパスであっても存在しません。

文字列を書くには、円記号を2倍にするか、rMartijnが提案するインジケーターを使用します。3番目の選択肢は、他のすべての文明化されたオペレーティングシステムと同様に、単にスラッシュを使用することです。Windowsはこれらを使用して完全に満足しています。

于 2012-09-11T14:04:47.260 に答える
1

Windows およびその他のほとんどのオペレーティング システムは、スラッシュを認識します。したがって、バックスラッシュ、ダブルバックスラッシュ、または r' ' (文字列リテラルについてはこちら) の代わりに、スラッシュを使用するだけで準備完了です。こちらの回答も詳しく書かれています。

更新: PS: バックスラッシュと文字列リテラルは注意して使用してください。常に特定のケースを確認してください。この回答には良いコメントがあります

于 2013-08-06T19:20:10.143 に答える