32

5_1.txtという名前のディレクトリにという名前のファイルがありますが direct、どのように使用してそのファイルを読み取ることができますreadか?

以下を使用してパスを確認しました:

import os
os.getcwd()
os.path.exists(direct)

結果は
True でした

x_file=open(direct,'r')  

そして私はこのエラーを受け取りました:

Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
x_file=open(direct,'r')
IOError: [Errno 13] Permission denied

なぜファイルが読めないのかわかりませんか?助言がありますか?

ありがとう 。

4

7 に答える 7

29

通常のファイルであるかのように、読み取るためにディレクトリを開こうとしているようです。多くのOSではそれができません。あなたが望むもの(あなたの説明から判断して)は

x_file = open(os.path.join(direct, "5_1.txt"), "r")  

または単に

x_file = open(direct+"/5_1.txt", "r")
于 2012-11-04T23:01:15.757 に答える
11

指定されたディレクトリにいない場合(つまり直接)、次を使用する必要があります(Linuxの場合)。

x_file = open('path/to/direct/filename.txt')

引用符とディレクトリへの相対パスに注意してください。

これは問題かもしれませんが、そのファイルにアクセスする権限もありません。たぶん、あなたはそれを別のユーザーとして開こうとしているのでしょう。

于 2012-11-04T22:57:12.357 に答える
4

この関数を使用してディレクトリを「開く」ことはできませんopenこの関数は、ファイルを開くために使用することを目的としています。

ここで、実行したいのは、ディレクトリにあるファイルを開くことです。最初に行う必要があるのは、このファイルのパスを計算することです。この関数を使用すると、パスの一部(ディレクトリとファイル名)を結合することでこれを実行できます。os.path.join

fpath = os.path.join(direct, "5_1.txt")

次に、ファイルを開くことができます。

f = open(fpath)

そしてその内容を読んでください:

content = f.read()

さらに、Windowsではopen、ディレクトリで使用すると例外が返されるPermissionDeniedと思いますが、実際にはそうではありません。

于 2012-11-04T23:00:15.573 に答える
2

この方法も便利だと思いました。

import tkinter.filedialog
from_filename = tkinter.filedialog.askopenfilename()  

ここにウィンドウが表示されるので、ファイルが見つかるまで参照できます。ファイルをクリックすると、openを使用して続行し、を読むことができます。

from_file = open(from_filename, 'r')
contents = from_file.read()
contents
于 2012-11-05T00:25:47.840 に答える
1

Windowsの場合、区切り文字として「\\」(LinuxおよびMacの場合は「/」)を含むフルパスを使用できます。os.getcwdを使用して現在の作業ディレクトリを取得し、現在の作業ディレクトリを参照するパスを指定できます。

data_dir = os.getcwd()+'\\child_directory'
file = open(data_dir+'\\filename.txt', 'r')

child_diectoryのパスを完全に指定しようとすると、エラーが発生しました。たとえば、この場合:

file = open('child_directory\\filename.txt', 'r')

エラーが発生しました。しかし、私はそれがうまくいくに違いないと思うか、私はそれをやや間違った方法でやっていますが、それは私にとってはうまくいきません。アバウトウェイは常に機能します。

于 2018-04-21T10:36:35.840 に答える
0

エラーメッセージが言ったように、アプリケーションにはディレクトリから読み取る権限がありません。これは、あるユーザーとしてディレクトリを作成し、別のユーザーとしてスクリプトを実行した場合に当てはまります。

于 2012-11-04T22:52:39.713 に答える
0

私のような人々が受け入れられた答えを見て、なぜそれが機能しないのか理解していない場合は、緑色のチェックされた例で、サブディレクトリの周りに引用符を追加する必要があります。

x_file = open(os.path.join(direct, "5_1.txt"), "r")  

実際にする必要があります

x_file = open(os.path.join('direct', "5_1.txt"), "r")   
于 2016-09-01T22:18:36.423 に答える