Python备份文件脚本问题

Python备份文件脚本问题,python,python-2.6,Python,Python 2.6,我一直在编写下面的备份脚本,将文件从一台服务器复制到另一台服务器,有几个要求。代码如下。有什么帮助吗?我有一个样本测试输入 import arcpy # Import arcpy module from arcpy import env # Import env module from arcpy import os

我一直在编写下面的备份脚本,将文件从一台服务器复制到另一台服务器,有几个要求。代码如下。有什么帮助吗?我有一个样本测试输入

import arcpy                                     # Import arcpy module
from arcpy import env                            # Import env module from arcpy
import os                                        # Import os module
import logging                                   # Import logging module
import shutil                                    # Import shutil module

inFile = "G:\data"                               # Input specified
outFile = "D:\data"                              # Output specified
backup = "D:\backup"                             # Intermediate backup file
logdirectory = "S:\backup_directory\log\*.log"                      
log = logging.getLogger("G:\data")               # Creates logger instance
hdlr = logging.FileHandler("G:\data\*.log")      # Creates FileHandler
# Creates Formatter    
formatter = logging.Formatter("%(asctime)s %(levelName)s %(message)s")

hdlr.setFormatter(formatter)   # Attaches Formatter to FileHandler
logger.addHandler(hdlr)        # Attaches FileHandler to Logger
logger.setLevel(logging.NOTE)  # Sets logger note

inFile = open("G:\users\tchaney\TestInputFile.txt", "r")
# Opens the data file to be read, and assigns it to the variable, inFile
outFile = open("G:\users\tchaney\TestOutputFile.txt", "w")
# Opens a data output file to be written to, and assigns it to outFile

shutil.copyfile(logger, "D:\data\copy_[fileDate].log")
# Copy logfile to archive as "copy_[filedate].log"

#for "*.log" in "logdirectory"
# For loop to check current date, and returns files 7 days old or less
    #return(currDate - fileDate) <= 7
#logger.note("Log files updated")

# same as file.readline() - reads one line at a time into a string variable,
# loop to read, stop service, write, start service. 
for inLine in inFile:
    # Split each line, while removing the comma, and store each field
    service, srcFile, destFile = inLine.split(",")

    # If source exists, for each service in the array, stop the service
    if os.path.exists("srcFile"): 
        for service in inFile[:]:                                       
            os.system("AGSSOM.EXE -x")        

        # If destination variable exists, copy destination to backup, and remove destination
        if os.path.exists("destFile"): 
            #arcpy.env.overwriteOutput = True  (needed with shutil?)
            shutil.copyfile("G:\data\*", "D:\backup\*")
            os.remove("destFile")
        else:
            logger.note("Filename did not exist prior to copy")

        shutil.copyfile("srcFile", "destFile") # Copy source to destination

        # If destination does not exist, copy backup to destination, and add logger note
        if not os.path.exists("destFile"): 
            shutil.copyfile("D:\backup\*", "D:\data\*")
            logger.note("[filename] copied from backup")

        for service in inFile[:]: # For each service in the array, start the service    
            os.system("AGSSOM.EXE -s")
    else: # If the source is not found, add logger note
        logger.note("Source not found")

inFile.close() # Close input file
outFile.close() # Close output file
import arcpy#import arcpy模块
从arcpy导入环境#从arcpy导入环境模块
导入操作系统#导入操作系统模块
导入日志记录#导入日志记录模块
导入shutil#导入shutil模块
inFile=“G:\data”#指定输入
outFile=“D:\data”#指定的输出
backup=“D:\backup”#中间备份文件
logdirectory=“S:\backup\u directory\log\*.log”
log=logging.getLogger(“G:\data”)#创建记录器实例
hdlr=logging.FileHandler(“G:\data\*.log”)#创建FileHandler
#创建格式化程序
格式化程序=logging.formatter(“%(asctime)s%(levelName)s%(message)s”)
hdlr.setFormatter(格式化程序)#将格式化程序附加到FileHandler
addHandler(hdlr)#将FileHandler连接到记录器
logger.setLevel(logging.NOTE)#设置记录器注释
inFile=open(“G:\users\tchaney\TestInputFile.txt”、“r”)
#打开要读取的数据文件,并将其指定给变量inFile
outFile=open(“G:\users\tchaney\TestOutputFile.txt”、“w”)
#打开要写入的数据输出文件,并将其指定给输出文件
shutil.copyfile(记录器,“D:\data\copy\uu[fileDate].log”)
#将日志文件复制到存档为“复制\[filedate].log”
#对于“logdirectory”中的“*.log”
#For循环检查当前日期,并返回7天或更短的文件

#return(currDate-fileDate)一个主要错误是给了一个
glob
参数

应该读

import glob
for fn in glob.glob("D:\\backup\\*"):
  shutil.copyfile(fn, "D:\\data")
同样,下面这一行也很奇怪:

hdr = logging.FileHandler("G:\data\*.log")
它应该是类似于

hdr = logging.FileHandler("G:\\data\\my_application.log")

我冒昧地修改了你的代码。这种程度的评论是疯狂的:充其量,它会让每个人都感到困惑。在最坏的情况下,注释和代码将失去同步。如果没有您所面临的错误,很难说出任何内容,您不认为吗?您需要帮助的脚本出了什么问题?发布代码并说“有帮助吗?”不是一个问题。还有一件事:你实际上并没有问任何问题。您刚刚丢弃了一些代码,希望我们不仅从代码中派生出需求,而且还发现其中的错误。另外,您提到了输入数据,但实际上没有给出任何数据。最后,AGSSOM.EXE的相关性是什么?为什么不在问题中包含该文件,或者在代码中删除对该文件的调用?请确保你的问题包含一个.Phihag,好吧,谢谢你在傲慢和贬低语言之间提供的帮助。在回答中读到一些傲慢是令人惊讶的!是的,我忘了在底部包含错误消息。他们是我的问题。但是对于一个对Python知之甚少并且以前从未使用过这些论坛的人来说,我发现人们会以如此消极的方式回应是令人惊讶的。我以为这些论坛是为了帮助Python初学者,而不是因为他们过度使用评论而责骂他们!AGSSOM.EXE用于打开和关闭服务,就像在服务器上一样。如果代码示例是非常一般的问题,那么是否只允许使用它们?没有人可能会使用此示例来备份某些数据?它之所以关闭,是因为它在本质上太具体了?@user906596就目前而言,没有人可能回答你的整个问题,因为集体缺乏信息。例如,我从您的代码中收集到,要重现问题(您还没有告诉我们),不仅需要Windows系统、Python和ArcGIS,还需要六个目录和文件。此外,由于<代码>若干要求从未得到充分解释,因此唯一可能完全正确的答案将需要通过打电话给上司来确定这些要求。这对于一个网络问题来说是不可行的。我们没有电话号码。@user906596无意冒犯,但谁在这里傲慢?如果你的问题不包含实际问题,你希望有人询问细节?顺便说一句,stackoverflow社区所做的就是询问细节(
如果没有您所面临的错误,很难说什么,您不觉得吗?
您需要帮助的脚本出了什么问题。请注意,提供答案是为了使问题更简单,而不是更复杂。正如我所说,任何stackoverflow问题的旁边都应该包含代码,并且代码不应该超过20行。我将发布完成的产品(完成后),以便其他人可以从中学习。我们都在这里互相帮助。我仍在整理细节,检查每一步是否有bug,确保满足所有要求。如果我被较小的部分卡住了,我可以使用链接中指定的标准重新发布。再次感谢您的时间和帮助。
hdr = logging.FileHandler("G:\\data\\my_application.log")