Python ClearCase下载Vobs Popen密码BASH程序
我昨天编写了这个程序,除了由CRON运行外,它实际上还在工作。今天,我运行了相同的脚本,但它不起作用。脚本将在没有任何回溯错误的情况下运行,它将从ClearCase视图复制顶部文件夹(vob),但目标文件夹下的文件夹和文件中没有实际的重要数据 这是我的Python脚本Python ClearCase下载Vobs Popen密码BASH程序,python,subprocess,clearcase,popen,cleartool,Python,Subprocess,Clearcase,Popen,Cleartool,我昨天编写了这个程序,除了由CRON运行外,它实际上还在工作。今天,我运行了相同的脚本,但它不起作用。脚本将在没有任何回溯错误的情况下运行,它将从ClearCase视图复制顶部文件夹(vob),但目标文件夹下的文件夹和文件中没有实际的重要数据 这是我的Python脚本 def obtainCode(view="My_VIEW", folder="/my_folder"): """Download code from ClearCase's File System and put it o
def obtainCode(view="My_VIEW", folder="/my_folder"):
"""Download code from ClearCase's File System and put it on the hard-drive"""
dest = '/etc/foo'
password = 'passwords'
v1 = subprocess.Popen(['cleartool', 'setview', view], shell=True, stdout=subprocess.PIPE)
print "v1 = ", v1
print "view maybe set :/"
c1 = subprocess.Popen(['sudo', '-p', '', '-S', 'cp', '-r', folder, dest], stdin=subprocess.PIPE)
c1.stdin.write(password + '\n')
c1.stdin.close()
c1.wait()
#### Close View and Stop Processes ####
v2 = subprocess.Popen(['cleartool', 'endview', view], shell=True, stdin=v1.stdout, stdout=subprocess.PIPE)
v2.kill()
v1.kill()
有谁知道:
1) 出了什么问题2)为什么昨天可以,但今天不行3)有更好的方法吗
谢谢你的时间和关注 尽量不要使用
setview
您不需要它,可以改为使用视图的完整路径
cleartool startview yourDynamicView
cd /view/yourDynamicView/vobs/yourVob
我以前提到过使用setview(“”)的危险。它在您的子流程中创建一个子流程,此处不需要该子流程。我在
dest
位置看到了文件夹
变量的名称,但在此文件夹下没有我想要的实际数据。这是昨天的工作,但是复制了文件夹下的所有重要内容。是的。当我从BASH运行它时,我在一个ClearCase视图中运行sudo cp-r/my_data/etc/foo
,它将所有内容递归地复制到目标位置。那么这个Python在您的系统上工作?我想知道我之前是否在尝试调整CRON.interest时弄乱了环境变量。感谢您的反馈。我在$HOME
中创建了一些文件夹,并试图使用交互式Python shell中的上述命令将它们复制到其他地方,但我收到了此回溯错误:IOError:[Errno 32]断管
::我想我可以尝试shutil
模块,看看是否能获得更好的结果。请看我的更新上面。问题可能与ClearCase交互。我认为这是因为我在桌面上创建了一些文件夹,并编写了一个脚本将它们复制到系统文件夹中,这样做很有效,所以我认为这不再是问题所在。我应该硬编码动态视图吗?我不知道视图的完整路径。@user3870315无需硬编码。只要知道动态视图的名称,就可以构建该视图的完整路径。不需要setview。谢谢您的帮助。我想我找到了通往风景的完整路径。我将通过编写一些代码来进行试验,看看这是否有效。再次感谢你DI注意到所有视图似乎都在/view
目录下。记住这一点,为什么我需要使用startview
命令?@user3870315实际上不需要使用setview。