1

私は python(x,y) を使用していますが、以前は Linux で正常に機能していた numpy loadtxt 関数の使用に問題があります。コードは次のようになります。

 from numpy import loadtxt    
 values=loadtxt("C:\Users\My_username\path\to\txt\file",float)

パスが正しいことを確認しました (エスケープ文字を使用する必要はないと思います)。ファイルに問題はありません。もともとは、Windows ファイルに変換した Linux ファイルでしたが、問題ないようです。エラーが二重のバックスラッシュと「x08」を挿入している理由がわからない

IOError: [Errno 22] invalid mode ('U') or filename:
    'C:\\Users\\Michael\\SkyDrive\\Documents\\university\third_year\\uni_work\\labs\x08andgap_spectro\x08andgap_spectro_GaAs_1nm\x08andgap_GaAs_v_vs_lambda_1nm.txt'

ipythonではテキストを選択して人間のようにコピーできないため、cmdからそのエラーをコピーする必要がありました。どんな助けでも大歓迎です。

4

1 に答える 1

0

OK、私の通常のトリックは機能しません。os.pathとスラッシュを使用してみてください

import os
import numpy as np

fname = os.path.normpath('C:/Users/Michael/SkyDrive/Documents/university/third_year/uni_work/labs/bandgap_spectro/bandgap_spectro_GaAs_1nm/bandgap_GaAs_v_vs_lambda_1nm.txt')
np.loadtxt(fname, float)

これを試して:

loadtxt(ur'C:\Users\Michael\SkyDrive\Documents\university\third_year\uni_work\labs\bandgap_spectro\bandgap_spectro_GaAs_1nm\bandgap_GaAs_v_vs_lambda_1nm.txt', float)

urファイル名の前に を付けます。

プレフィックスは、文字列がであり、エスケープを無視する必要があるrことを python に伝えます。実際、2 つのバックスラッシュが自動的に挿入されます。

In [132]: r'C:\Users\Michael\SkyDrive\Documents\university\third_year\uni_work\labs\bandgap_spectro\bandgap_spectro_GaAs_1nm\bandgap_GaAs_v_vs_lambda_1nm.txt'
Out[132]: 'C:\\Users\\Michael\\SkyDrive\\Documents\\university\\third_year\\uni_work\\labs\\bandgap_spectro\\bandgap_spectro_GaAs_1nm\\bandgap_GaAs_v_vs_lambda_1nm.txt'

uユニコードを使用するように指示します。

そして はx08a から来ます\b:

In [133]: '\b'
Out[133]: '\x08'

これはバックスペース文字です。

于 2013-11-04T18:27:43.323 に答える