我想为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
答案 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)