2014-01-07 10 views
0

파이썬 초보자로서 저는 파일을 옮기는 실제 문제가 있습니다. 아래 스크립트는 필자가 마침내 선택한 파일을 새로운 폴더로 옮기는 작업을 마침내 만든 스크립트입니다 (!). 내가 짐작할 수없는 몇 가지 이유 때문에, 한 번만 작업 한 다음 대상 폴더가 실제로 이상하게 생성되었습니다. 한순간에 정확한 이름을 가진 알려지지 않은 응용 프로그램 인 '디렉토리'를 만들었으며 다른 경우에는 무작위로 보이는 파일을 사용하여 텍스트 파일을 만들어 콘텐츠를 생성했습니다. 다시 파일 이름이 올바르게 지정되었습니다. 내가 만든 폴더를 삭제하고 다시 실행하려고 내가 그렇게하기 위해 무엇을 할 수 있는지 때이 스크립트를 재현 할 수없는 이유를shutil.copy는 한 번만 작동합니다.

#!/usr/bin/python 

import os, shutil 

def file_input(file_name):     
    newlist = []            #create new list 
    for names in os.listdir(file_name):       #loops through directory 
     if names.endswith(".txt") or names.endswith(".doc"): #returns only extensions required  
      full_file_name = os.path.join(file_name, names)  #creates full file path name - required for further file modification 
      newlist.append(full_file_name)      #adds item to list 
      dst = os.path.join(file_name + "/target_files") 
      full_file_name = os.path.join(file_name, names) 
      if (os.path.isfile(full_file_name)): 
       print "Success!" 
       shutil.copy(full_file_name, dst) 

def find_file(): 
    file_name = raw_input("\nPlease carefully input full directory pathway.\nUse capitalisation as necessary.\nFile path: ") 
    file_name = "/root/my-documents"       #permanent input for testing! 
    return file_input(file_name) 
    '''try: 
     os.path.exists(file_name) 
     file_input(file_name) 
    except (IOError, OSError): 
     print "-" * 15 
     print "No file found.\nPlease try again." 
     print "-" * 15 
     return find_file()''' 

find_file() 

누군가가 말해 주시겠습니까 :

여기에 관련 스크립트입니다?

나는 조금 지저분하다는 것을 알고있다. 그러나 이것은 더 큰 스크립트의 일부가 될 것이고 나는 아직 초안 단계에있다!

많은 감사

+0

'if (os.path.isfile (full_file_name)) :'대상 파일의 존재를 확인합니다. BTW, 코드 정리! 이상한 이름, 불필요한 괄호, 이유없는 '반환'... '조금 지저분하지'않은 것은 엉망입니다. – Matthias

+0

아니요 소스 파일을 검사하지 않습니다. file_name은 수정되지 않았으며 이름도 – praveen

+0

입니다. Matthius를 혼동하면 죄송합니다. 내가 말했듯이, 그것은 일하는 데있어 대충 쓴 것이다. 네가 맞아. 일을 더 명확하게하기 위해 게시하기 전에 정리해야 해. 불필요한 많은 비트와 '이상한 이름'은 스크립트의이 부분과 관련이 없거나 이전의 시도를 그대로 따르도록하기 위해 존재합니다. 이것은 내가 처음으로 작성한 게시물입니다. 나는 지각에 대해 사과드립니다. – user3103208

답변

0

이 작품은 :

import os, shutil 

def file_input(file_name):     
    newlist = []            #create new list 
    for names in os.listdir(file_name):       #loops through directory 
     if names.endswith(".txt") or names.endswith(".doc"): #returns only extensions required  
      full_file_name = os.path.join(file_name, names)  #creates full file path name - required for further file modification 
      newlist.append(full_file_name)      #adds item to list 
      dst = os.path.join(file_name + "/target_files") 

      if not os.path.exists(dst): 
       os.makedirs(dst) 

      full_file_name = os.path.join(file_name, names) 
      if (os.path.exists(full_file_name)): 
       print "Success!" 
       shutil.copy(full_file_name, dst) 

def find_file(): 
    file_name = raw_input("\nPlease carefully input full directory pathway.\nUse capitalisation as necessary.\nFile path: ") 
    file_name = "/home/praveen/programming/trash/documents"       #permanent input for testing! 
    return file_input(file_name) 

find_file() 

당신은 당신의 복사 대상 디렉토리가 실제로 존재하는 경우를 작성하지 않을 경우 확인해야합니다. shutil.copy는 파일을 해당 디렉토리에 복사합니다.

+0

Thanks Praveen! 그것은 실종되었습니다. 나는 shutil 함수와 혼동을 느낀다. 내가 보았던 모든 문서는 목적지 폴더가 존재하기 때문에 존재하지 않아야한다고 말했다. 시행 착오!! – user3103208