文件输入处理的数据路径

时间:2018-01-14 03:11:51

标签: python python-3.x file-io

我想为python提供一个windows'数据路径'可用于设置输入处理。我用谷歌搜索没有运气,现在我认为我是独立的。

在使用python的文件中,有很多方法可以阅读,并且在对#34; \"和" /"和Windows路径名称我找到了一种方法来设置我的数据路径。这不是一般方法,但应该对我很好。

相关问题:这段代码难看吗?这是一种非标准方法吗?应该使用3.6中的优雅功能吗?

### Title: Process an input file using a 'data path' for a user on windows
import sys 
import os
print("OK, starting program...")

file_processed = False
for path, dirs, files in os.walk("/Users/Mike"):
    if file_processed: break
    for file in files:
        if file_processed: break
        if file == 'seriousdata.txt':
            my_path = os.path.abspath(path)
            my_dsn = os.path.join(my_path, file)
            print("Opening txt file " + my_dsn + " for input.")
            with open(my_dsn) as da_lines:
                textlines = (line.rstrip('\r\n') for line in da_lines)
                for line in textlines:
                    print(line)
            file_processed = True
if file_processed:
    pass
else:
    print("File not found")

print("OK, program execution has ended.")
sys.exit() # END SAMPLE CODE SNIPPET

2 个答案:

答案 0 :(得分:1)

从查看代码开始,我假设您要从一个目录开始,然后浏览每个子目录,打印出匹配的文件名内容(如果找到)。

如果是这样,那么通过递归就可以做到这一点:

import os

def recursive_list(path, filename):
    files = os.listdir(path)
    for name in files:
        try:
            p = os.path.join(path, name)
            if os.path.isdir(p):
                recursive_list(p, filename)
            else:
                if name == filename:
                    with open(p, "r") as f:
                        print(f.read())
        except PermissionError:
            pass
    return

recursive_list("/home/jebby/Desktop","some_file.txt")

这将开始列出path中的文件。对于找到的每个文件,如果该文件是目录,则调用该函数本身(从该文件夹的路径开始)。如果filename与当前目录中任何文件的名称匹配,则将打印该文件(如果用户具有该文件的权限)。

否则,如果您只想从已知目录中读取文件名 ,不用 向下走到目录树:

import os

data_path = "/home/jebby/Desktop"
file_you_want = "filename.txt"
with open(os.path.join(data_path, file_you_want), "r") as f:
    content = f.read()
print(content)

答案 1 :(得分:0)

主要问题是:你知道文件的位置吗? Jebby有一个克服目录的答案。

这是一个不使用“import os”的解决方案

dir_fullpath = "c:/project_folder/data"
dir_path = "data"
filename = "file.txt"
try:
   f = open(dir_path + "/" + filename, 'r')
#  print("open " +dir_path + "\" + filename)
#  data=[]
   for line in f:
     print (line.rstrip())
#    data.append(line.rstrip()) 
   f.close()

except IOError:
   print("Fail to open" + dir_path + "\" + filename)