2017-08-24 15 views
0

私はPythonでuart経由でファイルの転送フォルダに取り組んでいます。以下は単純な関数ですが、タイトルのようにエラーが発生するため問題があります。IOError:[Errno 2]このようなファイルやディレクトリはありません: '1.jpg' 1.jpgはテストフォルダ内のファイルの1つです。だから、プログラムはそれが存在しないファイル名を知っているので、それは非常に奇妙です!私は間違っているの?IOError:[Errno 2]そのようなファイルやディレクトリはありません(実際に存在する場合)Python

def send2(): 
    path = '/home/pi/Downloads/test/' 
    arr = os.listdir(path) 
    for x in arr: 
     with open(x, 'rb') as fh: 
      while True: 
       # send in 1024byte parts 
       chunk = fh.read(1024) 
       if not chunk: break 
       ser.write(chunk) 
+0

とhttps://stackoverflow.com/questions/9765227/ioerror-errno-2-no-such-file- or-directory-to-open-a-file、https://stackoverflow.com/questions/36477665/python-on-windows-ioerror-errno-2-no-such-file-or-directory –

+0

おそらく'glob.glob( '/ home/pi/Downloads/test/*' ) '代わりに... –

答えて

1

あなたは彼らがあなたの作業ディレクトリにない場合は開きたいファイルの実際の完全なパスを提供する必要があります。

import os 
def send2(): 
    path = '/home/pi/Downloads/test/' 
    arr = os.listdir(path) 
    for x in arr: 
     xpath = os.path.join(path,x) 
     with open(xpath, 'rb') as fh: 
      while True: 
       # send in 1024byte parts 
       chunk = fh.read(1024) 
       if not chunk: break 
       ser.write(chunk) 
1

os.listdir()だけの裸のファイル名ではなく、完全修飾パスを返します。これらのファイル(おそらく?)はあなたの現在の作業ディレクトリにはないので、エラーメッセージは正しい - あなたが探している場所にファイルが存在しない。

簡単な修正:

for x in arr: 
    with open(os.path.join(path, x), 'rb') as fh: 
     … 
0

はい、コード昇給エラー、あなたが開いているファイルは、Pythonのコードが実行されている場所から現在の場所に存在していないため。

os.listdir(path)は、完全なパスではなく、指定された場所からファイルとフォルダの名前のリストを返します。

os.path.join()を使用して、ループにforというフルパスを作成します。例:

file_path = os.path.join(path, x) 
with open(file_path, 'rb') as fh: 
     ..... 

ドキュメント:

  1. os.listdir(..)
  2. os.path.join(..)
関連する問題