-1

変数 myList = [1,4,2,3,5] の場合に機能する単純なバブルソート アルゴリズムを開発しましたが、外部テキスト ファイルからテキストを読み込む必要があります。これは私が持っているものです。

#New Bubble sort
f = open('Users/Luke/Dropbox/Programming/numbers.txt', 'r')
my_list = f.read()
print(my_list)
length = len(my_list)

for i in range(length):
    for j in range(length-1):
        if my_list[j] > my_list[j+1]:
            my_list[j], my_list[j+1] = my_list[j+1], my_list[j]
            print(my_list)

f.close()

これは私に次のように返します:

FileNotFoundError: [Errno 2] No such file or directory: 'Users/Luke/Dropbox/Programming/numbers.txt'  

ディレクトリは存在し、さまざまなバリエーション(「C:/」を含むバック/フロントスラッシュ)などを試しました.

4

5 に答える 5

1

最初の '/' が抜けています /Users/Luke/Dropbox/Programming/numbers.txt

于 2013-02-07T08:48:23.860 に答える
0

具体的には os.path.join を使用する必要があります。 os.path.join この関数はパス区切り文字を処理するため、os に関係なく常に正しいものになります。

同様に:

from os import path
my_path = path.join('Users', 'Luke', 'Dropbox', 'Programming', 'numbers.txt')

詳細については、http: //docs.python.org/2/library/os.path.htmlを参照してください。

于 2013-02-07T13:29:13.197 に答える
0

次のように、スラッシュの代わりにバック スラッシュが必要です。

file = open('C:\\Users\\Luke\\Dropbox\\Programming\\numbers.txt' ,'r')

また、バックスラッシュはエスケープ文字であるため、2 つ追加する必要があります (最初の 1 つは 2 番目の文字をエスケープします)。

于 2013-02-07T08:49:09.707 に答える
0

おそらく次のようなものが必要です。

'C:\\Users\\Luke\\Dropbox\\Programming\\numbers.txt'

または

r'C:\Users\Luke\Dropbox\Programming\numbers.txt'

'\'Python ではエスケープ文字であることを忘れないでください。

于 2013-02-07T08:50:00.280 に答える
0

ファイルへの絶対パスを取得するには:

  • ctrl+ファイルに移動しright-click、メニューから [パスとしてコピー] を選択します。

  • または、ファイルのプロパティを開いてそのフォルダー名を取得すると、その名前を組み合わせて完全なパスにすることができます。

  • または、ショートカットを作成し、ショートカットのプロパティを参照してターゲットの場所を確認することもできます。

  • または、開いているコンソールにファイルをドラッグして、表示されるパスを確認することもできます。

言い換えれば、これを判断するのは問題ではありません...

入力が可能な場合にプログラムでこれに対処するには、チェックしてください。os.path.exists(path)

于 2013-02-07T09:00:24.287 に答える