2013-03-04 60 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) 
相關問題