os.chdir 工作一次,第二次调用后不工作;蟒蛇脚本



在下面的脚本中,我尝试克隆除两个以外的所有项目,然后将这两个项目克隆到Homepath中,而不是我的项目目录中:

#!/usr/bin/env python
import os, sys, subprocess, time, re
from my_scripting_library import *
bucket_hoss = BitbucketAPIHoss()
all_project_names = bucket_hoss.get_bitbucket_project_names()
print(all_project_names)
os.chdir(PROJECT_PATH)
print(PROJECT_PATH)
TOP_LEVEL_PROJECTS = ['scripts', 'my_documents']
for project in all_project_names:
    if project not in TOP_LEVEL_PROJECTS:
        clone_project(project=project)
os.chdir(HOMEPATH)
print (HOMEPATH)
print(os.getcwd())
for project in TOP_LEVEL_PROJECTS:
    clone_project(project=project)

输出

cchilders:~/scripts [master]$ ./git_and_bitbucket/clone_all.py 
[u'autohelper', u'bookwormbuddy', u'buildyourownlisp_in_C', u'bytesized_python', u'craigslist', u'foodpro', u'govdict', u'javascript-practice', u'learn_c_the_hard_way', u'my_documents', u'neo4j_sandbox', u'notes_at_work', u'poker_program_demo', u'portfolio', u'scriptcity_demo', u'scripts', u'transmorg_django', u'writing']
/home/cchilders/projects
fatal: destination path '/home/cchilders/projects/autohelper' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/bookwormbuddy' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/buildyourownlisp_in_C' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/bytesized_python' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/craigslist' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/foodpro' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/govdict' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/javascript-practice' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/learn_c_the_hard_way' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/neo4j_sandbox' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/notes_at_work' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/poker_program_demo' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/portfolio' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/scriptcity_demo' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/transmorg_django' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/writing' already exists and is not an empty directory.
/home/cchilders
/home/cchilders
fatal: destination path '/home/cchilders/projects/scripts' already exists and is not an empty directory.
fatal: destination path '/home/cchilders/projects/my_documents' already exists and is not an empty directory.

既然脚本现在显示正确的目录(我的 HOMEPATH),为什么这些项目仍然有自己的想法被克隆到项目目录中?谢谢

问题出在clone_project函数的某个地方。 我的猜测(因为您没有发布该代码)是projects要么直接硬编码,要么设置为PROJECT_PATH

猜测一下,您是否正在更改为相对路径而不是变回?

例如,如果您从

 /home/myuser

然后 CHDIR 进入项目 1

/home/myuser/project1

如果您随后尝试将 chdir 放入项目 2

/home/myuser/project1/project2

你可能想先回到起点。

最新更新