сначала исключите бесполезное утверждение
# check if correct file extension
def checkExt(path):
return path.endswith(FILE_EXT)
, затем будьте чуть более питоническим
# rsync subprocess
def rsyncFile(path):
printLog("Syncing file '%s'" % os.path.basename(path))
try:
p = subprocess.Popen(['rsync', '-a', '--remove-source-files', path, REM_DIR], stdout=subprocess.PIPE)
for line in p.stdout:
printLog("rsync: '%s'" %line)
p.wait()
printlog(
{
0 : '<<< File synced successfully :) >>>',
10 : '****** Please check your internet connection!! ****** Rsync error code: %s' % p.returncode,
}.get(p.returncode, '****** Please check your internet connection!! ****** Rsync error code: %s' % p.returncode) # A switch statement in python !
)
except:
logging.exception("An exception occured")
При использовании «logging.exception» вы увидите исключение и трассировку, вызвавшую проблему.
затем уменьшите main
def main():
while True:
files = [f for f in getFiles(LOC_DIR) if checkExt(f)]
if len(files) == 1:
printLog('<<< Found %s matching file >>>' % len(files))
elif len(files) > 1:
printLog('<<< Found %s matching files >>>' % len(files))
for f in files:
if checkSize(f):
rsyncFile(f)
printLog('No files found. Checking again in %s seconds' % RUN_INT)
time.sleep(RUN_INT)
printLog('Checking for files')
оператор "while True:" позволит избежать предела рекурсии, которого вы могли бы легко достичь при вызове main () в конце основного кода
комментарии и замечания приветствуются:)