나는 작업 디렉토리에서 공유 드라이브로 파일을 자동으로 복사하여 다른 사람들이 잡고 잡을 수 있도록 스크립트를 작성 중이다. 현재 진행중인 프로젝트에 따라 공유 드라이브에 특정 장소가 있습니다. 예를 들어프로젝트 이름과 파일 경로의 데이터베이스로 작동하도록 가져 오기 파일을 만들고 구현하려면 어떻게합니까?
:
나는 "바나나"라는 프로젝트를 진행하고 있다면, 나는 내 로컬 "바나나"디렉토리에 내 스크립트를 실행 할 수 있어야합니다. 스크립트는 단일 인수를 요구합니다. 인수는 프로젝트의 이름입니다.
예 :
>python C:\Users\me\projects\Banana\myCopyScript.py Banana
그렇게되면, 자동으로 공유 드라이브에 그 프로젝트의 폴더에 내 모든 "바나나"프로젝트 파일을 복사해야합니다.
예 : 내가 가서 수동으로 파일 경로 위치를 입력하면
>python C:\Users\me\projects\Banana\myCopyScript.py Banana
...Copying Banana to T:\SharedDrive1\projects\Banana
...Copying Banana to Z:\SharedDrive2\projects\Banana
는 지금, 스크립트에만 작동 (복사하고 위치로 복사).
그러나이 스크립트 파일로 가져올 수있는 파일을 만들고 싶습니다. 이 가져 오기 파일에는 모든 프로젝트 및 복사해야하는 파일 경로의 목록이 포함됩니다.
예 .xml 파일 :
<project>Banana</project>
<copyTo>T:\SharedDrive1\projects\Banana</copyTo>
<copyTo>Z:\SharedDrive2\projects\Banana</copyTo>
<project>Apple</project>
<copyTo>T:\SharedDrive1\projects\Apple</copyTo>
<copyTo>Z:\SharedDrive2\projects\Apple</copyTo>
<project>Orange</project>
<copyTo>T:\SharedDrive1\projects\Orange</copyTo>
<copyTo>Z:\SharedDrive2\projects\Orange</copyTo>
가 나는 .xml 파일에 설정하고 있지 않다. 그것은 모든 종류의 파일 일 수 있습니다. 그 요소는 제가 묻고있는 전반적인 질문의 일부입니다. 나는 JSON과 YAML도 고려했다. 이 형식의 데이터에 가장 적합한 형식을 알고 싶습니다.
def main():
parser = argparse.ArgumentParser(description = 'copy targets out to their folders in the T: and Z: drives)
parser.add_argument('project', help='The project must be a folder in the current directory containing the files you want to copy')
args = parser.parse_args()
project_name = args.project
# TODO : figure out how to grab the local directory automatically instead of hard coding it each time
directory = r'C:\Users\me\projects\Banana'
for f in os.listdir(directory):
out_files.append(directory + '\\' +f)
# TODO : figure out how to reference an import file with all the projects and their file paths instead of hard coding it each time
for target_folder in (r'\\SharedDrive1\projects',
r'\\SharedDrive2\projects'):
make_folder(target_folder + '\\' + project_name)
print >> sys.stdout, 'Copying project folder', project_name, 'to', target_folder + '\\' + project_name
print (" ")
copy_files(out_files, target_folder + '\\' + project_name)
을하지만이 좋지 않은 :
는 지금, 내 스크립트과 같이 하드 코딩 된 파일 경로가 있습니다. 나는 여기서 묻고있는 질문의 두 번째 부분이다. 나는 이것을 정리할 수 있기를 원하지만, 나는 이런 종류의 배경에 대해 많은 배경을 가지고 있지 않다. 그것은 디렉터리를 트래버스하고 파일/폴더를 조작하는 스크립트 작성에 대한 나의 첫 번째 시도입니다.