1

空のフォルダに新しいテキスト ファイルを作成しようとしています。フォルダへのパスは次のとおりです。

C:\Users\Tor\Desktop\Python files\retning

Windows エクスプローラーのコマンド ラインでこれを入力すると、空のフォルダーが表示されます。

Python でコードを入力すると、エラー メッセージが表示され、Python がいくつか'\''\\'

これは私のコードです

   sector='A5'
   g=open('C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')

これはエラーメッセージです

Traceback (most recent call last):
  File "C:\Users\Tor\Desktop\Python files\filer som behandler output\Vindretning.py", line 2, in <module>
    g=open('C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')
IOError: [Errno 22] invalid mode ('a') or filename: 'C:\\Users\\Tor\\Desktop\\Python files\retning\retningA5.txt'

誰かが私が間違っていること、またはここで何が起こっているのか教えてもらえますか?

4

3 に答える 3

3

\文字列でエスケープする必要があります。そのため、\\または生の文字列が使用されます ( r'test String')

生の文字列を使用すると、ここで問題が解決します。何かのようなもの、

open(r'C:\Programming Test Folder\test_file.py')

したがって、コードは次のように変更されます

g=open(r'C:\Users\Tor\Desktop\Python files\retning\retning{}.txt'.format(sector), 'a')

または/、次のように Windows で使用します。

g=open('C:/Users/Tor/Desktop/Python files/retning/retning'+sector+'.txt', 'a')
于 2013-08-08T12:47:31.827 に答える
2

これは正常な動作です。Python は、Python スクリプトまたはインタープリター プロンプトに貼り付けることができる文字列表現を提供します。\は Python 文字列リテラルでエスケープ シーケンス (\nまたは など) を開始するために使用される文字であるため\xa0、バックスラッシュは 2 重になっています。

実際、ここで重要なのはバックスラッシュがエスケープされていない文字です。\rキャリッジ リターンのエスケープ コードです。代わりに、次のオプションのいずれかを使用して Windows パスを指定する必要があります。

  • 文字列リテラルでバックスラッシュを二重にして、すべてのバックスラッシュをエスケープします。

    g = open('C:\\Users\\Tor\\Desktop\\Python files\\retning\\retning'+sector+'.txt', 'a')
    

    \rがエスケープコードとして解釈されなくなりました。

  • 生の文字列リテラルを使用します。

    g = open(r'C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')
    

    生の文字列リテラルでは、ほとんどのエスケープ コードは無視されます。

  • スラッシュを使用します。

    g = open('C:/Users/Tor/Desktop/Python files/retning/retning'+sector+'.txt', 'a')
    

    スラッシュは、Windows ではパスの区切り記号として正常に機能し、エスケープ文字として解釈される可能性はありません。

于 2013-08-08T12:47:40.630 に答える
1

通常の Python 文字列では、バックスラッシュには特別な意味があります (たとえば、\n改行を示します)。コードで指定したパスでは\\、各ディレクトリ区切り記号 (\\を含めることを意味します) を使用するか、バックスラッシュの特別な処理が適用されないことを意味する生の文字列として文字列をマークする必要があります。次のように、引用符の前に r を付けてそれを行いますr'Folder\Sub-Folder\Another'

エラー メッセージは基本的に python であり、元の文字列を取得するために使用できる python コードを提供します。

于 2013-08-08T12:52:27.037 に答える