2

免責事項:私は一般的に(Google)およびここでこのトピックに関するいくつかの情報を検索しましたが、ほとんどの回答は非常に古いか、私にはまったく意味がないようです。無知。

問題: 私のアプリはパスまたはファイルのコマンド ライン入力を受け入れますが、それについていくつかのことを決定する必要があります。

  1. パスかファイルか、
  2. 相対的か絶対か
  3. 読み取り可能および/または書き込み可能(テスト結果の読み取りと書き込みが必要)(競合状況の可能性を無視)

1 つの注意点

    try:
        file=open(filename,'w')
    except OSError as e:
        {miscellaneous error handling code here}

パラメータ(上記の例のファイル名)が存在するかどうか、または書き込み可能かどうかなどを明らかに教えてくれます。例外の結果を解釈する方法を知るには、例外コードについて十分に理解していません。また、相対/絶対情報も提供しません。

これを行う方法が 1 つもないと仮定すると、次の 3 つのことを知る必要があります。

  1. 相対/絶対の判別方法
  2. ファイルまたはディレクトリを指していますか
  3. プログラムのEUIDは場所を読み取ることができ、書き込みも同じです。

私はここで収集した情報から学びたいと思っています。私は Python を初めて使用し、重要なプロジェクトに参加しています。この部分以外は全部マスターしました。どんな助けでも大歓迎です。(良いヘルプ サイトへのポインタは大歓迎です!)(すでにブックマークされている docs.python.org を除く ;-) )

4

2 に答える 2

1

ここにあなたの答えがあります。ドキュメントでは、以下が Windows と Linux の両方で機能することを指定しています。

  1. 相対/絶対パスの判別方法 os.path.isabsは、パスが絶対パスの場合は True を返し、そうでない場合は False を返します。

  2. ファイルまたはディレクトリを指していますか 同様にos.path.isdirを使用して、パスがディレクトリかどうかを確認します。os.path.isfile(path)を使用して、パスがファイルかどうかを確認できます。

  3. プログラムのEUIDは場所を読み取ることができ、書き込みも同じです。os.access(path, mode)を使用して、モードで指定されたパーミッションを必要とする操作がパスで指定されたファイルで可能かどうかを知ることができます。PS これは、ネットワーク経由でアクセスされているファイルには機能しません。os.statを使用できます。これは、すべての情報を取得する正しい方法です。ただし、通話料が高くなるため、1 回の通話ですべての情報を取得するようにしてください。結果を解釈するには、statモジュールを使用できます。

于 2012-09-09T18:25:42.447 に答える
1

os.pathは、isabs()、isfile()、isdir() などを使用して、これらのニーズのほとんどを処理するようです。頭のてっぺんから、単純な True/False を与える関数を思いつきません。特定のファイルの読み取り/書き込みアクセス用ですが、これに取り組む 1 つの方法は、osモジュールの stat 関数を使用して、ファイルのパーミッションと所有者を確認することです。

于 2012-09-09T18:26:55.973 に答える