2013-03-04 34 views
0

我(试图)编写一个工具,将基于用户输入打开文件。 我想最终将脚本的结果写入文件并将其存储到与输入文件相同的目录中。如何通过用户输入python打开文件

我现在有这个

from Bio import SeqIO 
import os, glob 


var = raw_input("what is the path to the file (you can drag and drop):") 
fname=var.rsplit("/")[-1] 
fpath = "/".join(var.rsplit("/")[:-1]) 

os.chdir(fpath) 
#print os.getcwd() 

#print fname 
#for files in glob.glob("*"): 
# print files 

with open(fname, "rU") as f: 
    for line in f: 
     print line 

我不明白为什么我不能打开该文件。 “os.getcwd”和“glob.glob”部分都显示我已成功移至用户目录。另外,该文件位于正确的文件夹中。然而,我无法打开文件... 任何建议,将不胜感激

+2

为什么不这样做'os.path.join(FNAME,fpath)',而不是扭曲您目前使用'rsplit's和'join's办理什么手续? – 2013-03-04 03:31:36

+0

你为什么需要改变目录。如果您知道存储在其中的目录,只需执行open(fpath +'/output.txt','w')'或输出 – 2013-03-04 04:11:22

+0

需要查看此示例的运行示例。在给出raw_input'/ home/user/test.txt'作为输入后,它工作正常。虽然正如其他人所建议的,但可能有更干净的方法来解决你正在做的事情。 – cwgem 2013-03-04 04:46:24

回答

1

尝试使用此方法打开文件并获取路径到文件:

import os 

def file_data_and_path(filename): 
    if os.path.isfile(filename): 
     path = os.path.dirname(filename) 
     with open(filename,"rU") as f: 
      lines = f.readlines() 
     return lines,path 
    else: 
     print "Invalid File Path, File Doesn't exist" 
     return None,None 

msg = 'Absolute Path to file: ' 
f_name = raw_input(msg).strip() 

lines,path = file_data_and_path(f_name) 
if lines != None and path != None: 
    for line in lines: 
     print lines 
    print 'Path:',path 
1

嗯asume你想验证,这也许可以帮助你:)

def open_files(**kwargs): 
    arc = kwargs.get('file') 
    if os.path.isfile(arc): 
     arc_f = open(arc, 'r') 
     lines = arc_f.readlines() 
     for line in lines: 
      print line.strip() 

if __name__ == "__main__": 
    p = raw_input("what is the path to the file (you can drag and drop):") 
    open_files(file=p) 
相关问题