2013-01-10 1 views
0

여러 요청을 통해 웹에서 파일을 다운로드해야합니다. 각 요청에 대해 다운로드 한 파일은 요청 번호와 이름이 같은 폴더에 저장해야합니다. 예를 들어Ruby1.9를 사용하여 런타임에 동적 이름으로 디렉토리를 만들 수 있습니까?

:

내 스크립트가 현재 요청 번호 87665.에 대한 파일을 다운로드 실행 그래서 모든 다운로드 파일을 대상 폴더 Current Download\Attachment87665에서 조립 될 것이다. 그러면 어떻게해야합니까?

대상 폴더 :Current Download이 고정됩니다. 동적으로 Attachmentxxxxxx 만 작성하면됩니다. xxxxxx은 요청 번호입니다.

코드의 파이썬 버전 : 하지만 난

request_number = 82673 

# base dir 
_dir = "D:\Current Download"  

# create dynamic name, like "D:\Current Download\Attachment82673" 
_dir = os.path.join(_dir, 'Attachment%s' % request_number) 

# create 'dynamic' dir, if it does not exist 
if not os.path.exists(_dir): 
    os.makedirs(_dir) 
+2

"정적"이름으로 디렉토리/파일을 만드는 것과 완전히 똑같습니다. –

+0

아무도 도와 줄 수 있습니까? – CodeLover

+0

Python 코드를 Ruby로 변환하는 것은 매우 간단하고 직접적인 작업이므로 도움이 필요하지 않습니다. ['File'] (http://www.ruby-doc.org/core-1.9.3/File.html) 및 ['Dir'] (http : // www. ruby-doc.org/core-1.9.3/Dir.html) 클래스를 사용하십시오. –

답변

2

여러 번 다운로드 할 수 있습니까? 그렇다면 무작위로 충돌이 발생할 가능성이없는 번호를 만들 수있는 무언가가 필요합니다.

Ruby의 Tempfile 모듈을 보자. 특히, open 메서드에 대해 이야기하고있다.

임시 파일을 관리하기위한 유틸리티 클래스입니다. Tempfile 개체를 만들면 고유 한 파일 이름을 가진 임시 파일이 만들어집니다.

require 'tempfile' 

file = Tempfile.new('foo') 
file.path  # => A unique filename in the OS's temp directory, 
      # e.g.: "/tmp/foo.24722.0" 
      # This filename contains 'foo' in its basename. 
file.write("hello world") 
file.rewind 
file.read  # => "hello world" 
file.close 
file.unlink # deletes the temp file 

또한 "명시 가까운"와 "작성 후 연결 해제 '에 대한 문서를 참조하십시오.

어떤 일을하든 관계없이 지정된 폴더에 파일이 많을수록 시스템 또는 코드에서 고유 한 파일 이름을 생성하는 데 더 오래 걸릴 수 있습니다.

데이터베이스를 사용하여 일련 번호를 추적 할 수도 있습니다.

그리고 "Generate unique filenames"도이 문제에 대해 여러 가지 해결책을 제시합니다. * nix 시스템에서는 아마도 uuidgen을 사용하는 것이 가장 좋습니다.

uuidgen 명령은 공간 및 시간에 대해 고유 한 128 비트 값인 Universally Unique IDentifier (UUID)를 생성합니다.

+0

예. 당신은 부분적으로 맞습니다.600 개의 요청 양식에서 스크립트를 통해'10000 +'파일을 다운로드해야합니다. 그냥 감사 목적으로 별도의 폴더에 보관해야합니다. 따라서 폴더 생성이 동적으로 필요하며 설명에서 언급 한 것처럼 폴더의 이름은 '현재 다운로드 + 요청 번호'가됩니다. 감사를 위해 이러한 파일을 로컬 디스크에 영구 저장해야합니다. – CodeLover

+1

문서를 읽으면 즉시 폴더 이름을 지정할 수 있습니다. 파일은 자동으로 삭제되거나 자동으로 삭제 될 수 있으며 사용자가 결정하며 코드 설정 방법에 따라 제어됩니다. "명시 적 종료"절을 참조하십시오. –

+0

제안에 대해'+ 1'! 흥미로운 것은 '당신은 데이터베이스를 사용할 수 있습니다.'입니다. 여기 조금 설명해 드릴까요? – CodeLover

관련 문제