我有一个是被反复调用,并通过subprocess
错误数据写入日志文件的功能,但是,每当新的数据写入到文件中,旧数据已清除。所以它不会在旧数据中附加任何新数据。开放(文件,“A +”)为f不附加
我做如下:
error_file = '\\\\some\\unc\\path\\error.log'
class Node:
def __init__(self, path, rev):
self.path = path
self.rev = rev
def __hash__(self):
return hash((self.path, self.rev))
def __eq__(self, node):
return (self.path, self.rev) == (node.path, node.rev)
def __ne__(self, node):
return not(self == node)
def get_excluded_nodes(excludes_dir):
nodes = list()
for root, subdirs, files in os.walk(os.path.dirname(excludes_dir)):
if 'flagged' in files:
with open(os.path.join(root, 'flagged')) as f:
for line in f.readlines():
try:
comps = line.split(' -a')
path = comps[0].strip()
rev = comps[1].split(':')[0].strip()
Nodes.append(Node(path,rev))
except:
pass
return nodes
def export_node(node, path=archive_dir):
with open(error_file, 'a') as f:
try:
comps = node.path.split('/')
if '.' in comps[len(comps)-1]:
os.makedirs(os.path.join(archive_dir, '/'.join(comps[:-1])))
else:
os.makedirs(os.path.join(archive_dir, node.path))
subprocess.call(['svn', 'export', os.path.join(some_path, node.path), another_path)], stderr=f)
except:
pass
def remove_duplicate_nodes(nodes):
return set(nodes)
if __name__ == '__main__':
all_nodes = get_excluded_nodes(os.path.realpath(__file__))
nodes = remove_duplicate_nodes(all_nodes)
for node in nodes:
export_node(node)
为什么不这项工作?
@Chris_Rands我也试过。这也是一样的。 –
我试过你的代码(修改刚好足以实际运行的东西),它工作正常。你确定'my_program'不是像你的文件那样写'\ r'等字符,当你看到它时会使输出看起来错误吗? – FatalError
@FatalError'my_program'其实,'[ '的svn', '出口',SOME_PATH,another_path]' –