<p>这是因为当您调用<code>open(file, 'r')</code>时,它试图在当前工作目录中打开一个文件</p>
<p>将代码更改为:</p>
<pre class="lang-py prettyprint-override"><code>directory = os.listdir(r'C:\Users\name\test_edi_dir')
for file in directory:
print("printing file names:", file)
with open('C:\Users\name\test_edi_dir\' + file, 'r') as edifactile:
pass
print(edifactfile.closed)
</code></pre>
<p>下一个问题是,一些<em>文件</em>实际上是<em>目录</em>,您的代码可能会失败,并出现以下错误:</p>
<pre><code>traceback (most recent call last):
File "<stdin>", line 3, in <module>
IOError: [Errno 21] Is a directory: '...'
</code></pre>
<p>因此,在打开该文件之前,您要检查该文件是否实际上是一个文件:</p>
<pre class="lang-py prettyprint-override"><code>isFile = os.path.isfile('C:\Users\name\test_edi_dir\' + file)
</code></pre>
<p>最后,完整的代码是:</p>
<pre class="lang-py prettyprint-override"><code>directory = os.listdir(r'C:\Users\name\test_edi_dir')
for file in directory:
print("printing file names:", file)
full_filename = 'C:\Users\name\test_edi_dir\' + file
if os.path.isdir(full_filename):
continue
with open(full_filename, 'r') as edifactile:
pass
print(edifactfile.closed)
</code></pre>