如何改进此代码的逻辑?

时间:2016-05-27 10:20:49

标签: python loops logic

代码

margin-top:50%

代码以#!/usr/bin/python import os import sys import ntpath import subprocess srcPaths = sys.argv[1] actionType = sys.argv[2] srcPaths = srcPaths.split("\t") srcPathsCount = len(srcPaths) lockCount = unlockCount = 0 def fileIsLocked(srcPath): cmd1 = subprocess.Popen(["ls", "-ldO", srcPath], stdout=subprocess.PIPE) cmd2 = subprocess.Popen(["awk", "{ print $5 }"], stdin=cmd1.stdout, stdout=subprocess.PIPE) cmd1.stdout.close() if "uchg" in cmd2.communicate()[0]: return True else: return False def setLock(flagStr, srcPath): global lockCount, unlockCount subprocess.call(["chflags", flagStr, srcPath]) if flagStr == "uchg": lockCount += 1 else: unlockCount += 1 for srcPath in srcPaths: if actionType == "Lock": if not fileIsLocked(srcPath): setLock("uchg", srcPath) elif actionType == "Unlock": if fileIsLocked(srcPath): setLock("nouchg", srcPath) else: if fileIsLocked(srcPath): setLock("nouchg", srcPath) else: setLock("uchg", srcPath) sys.stdout.write("{}/{}/{}".format(lockCount, unlockCount, srcPathsCount)) srcPaths为参数。前者是带有制表符分隔文件路径的字符串,而后者是一个字符串,其值可能为" Lock"," Unlock"和" Toggle" ,由用户选择。

函数actionType检查文件是否被锁定。它通过使用fileIsLocked(srcPath)ls -ldO来获取文件标志。如果在那里找到awk,则函数返回"uchg",反之亦然。函数True执行shell脚本命令以根据条件锁定/解锁文件,并保持已锁定和解锁的文件的计数。

当然,如果用户想要锁定文件,将检查文件路径是否已解锁,并将继续锁定已解锁的文件路径。如果文件要解锁,反之亦然。如果用户想要切换,那么如果文件被锁定,它们将被解锁,反之亦然。

我不确定代码是否像它需要的那样简洁。在我看来,代码可能会缩短,或者函数可能会连接在一起。但我还没有能够修改代码并仍然按预期工作。

您认为如何改进代码逻辑?

0 个答案:

没有答案