迭代打开python3 osx中不同目录中的文件

时间:2016-10-21 18:46:10

标签: macos python-3.x

我是编码的绝对新手,很抱歉,如果这是一个非常基本的问题。我试图打开不同目录中的特定文件(从我当前工作的那个目录)并使其做一些事情。当我只是要求它找到文件时,它做得很好,但它不会打开文件(" FileNotFoundError:[Errno 2]没有这样的文件或目录")我不知道我哪里出错了。这是我的代码:

for file_name in os.listdir("/Users/sujathakoduvayurp/Downloads/exercises-and-examples/Chapter 9/exercises"):
 if file_name.endswith(".dna"):
  print (file_name)

这很好,我得到了具有正确扩展名的文件列表。像这样:     xaa.dna     xab.dna     xac.dna     xad.dna     xae.dna     xaf.dna     xag.dna     xah.dna     xai.dna     xaj.dna

但是当我这样做时:

for file_name in os.listdir("/Users/sujathakoduvayurp/Downloads/exercises-and-examples/Chapter 9/exercises"):
 if file_name.endswith(".dna"):
  dna_file= open("/Users/sujathakoduvayurp/Downloads/exercises-and-examples/Chapter 9/file_name","r")

我收到错误消息,如前所述。我不确定问题是什么。任何帮助将不胜感激。 谢谢! PS:我不确定它在这里是否正确,但我的缩进很好。

2 个答案:

答案 0 :(得分:0)

错误在于这一行:

dna_file= open("/Users/sujathakoduvayurp/Downloads/exercises-and-example/Chapter 9/file_name","r")

它认为您正在尝试打开名为file_name的文件,因为它包含在路径字符串中。要打开文件,应将路径与file_name变量连接起来。例如:

for file_name in os.listdir("/Users/sujathakoduvayurp/Downloads/exercises-and-examples/Chapter 9/exercises"):
 if file_name.endswith(".dna"):
  dna_file = open("/Users/sujathakoduvayurp/Downloads/exercises-and-examples/Chapter 9/" + file_name,"r")

此代码应打开文件,因为file_name已从路径字符串中删除,现在是包含文件名的变量。

答案 1 :(得分:0)

以下对我有用。 os.path.join

import os

path = "/Users/JupyterFiles/exercises and examples/working_with_the_filesystem/exercises"

for file_name in os.listdir(path):
    if file_name.endswith(".dna"):
        print(file_name)
        dna_file = open(os.path.join(path,file_name),"r")
        for line in dna_file:
            DNA = line.rstrip("\n")
            length = len(DNA)
            print(length)