如何验证从svn-Python、osx下载的文件

如何验证从svn-Python、osx下载的文件,python,macos,validation,svn,checksum,Python,Macos,Validation,Svn,Checksum,我从SVN下载文件,文件相当大(~300MB) 我多次使用该脚本,如果该文件已经存在,我不想再次下载它,因为我需要验证我拥有的文件是否与SVN上的相同(连接问题有时会杀死我的脚本,并且下载没有完成) 下载前是否有任何验证方法?(比如获取svn文件的校验和,我找不到该怎么做) 我使用这一行进行下载: fn,download_exit_code=urllib.urlretrieve(url_path,ver_name) 非常感谢…您可以查看SVN版本号。下面是一些适合我的代码: impor

我从SVN下载文件,文件相当大(~300MB) 我多次使用该脚本,如果该文件已经存在,我不想再次下载它,因为我需要验证我拥有的文件是否与SVN上的相同(连接问题有时会杀死我的脚本,并且下载没有完成)

下载前是否有任何验证方法?(比如获取svn文件的校验和,我找不到该怎么做)

我使用这一行进行下载:

    fn,download_exit_code=urllib.urlretrieve(url_path,ver_name)

非常感谢…

您可以查看SVN版本号。下面是一些适合我的代码:

import subprocess
svn_url = ...
version_string = subprocess.check_output("svnversion")
parts = version_string.split(":")
svn_version = int(''.join([s for s in parts[-1] if s.isdigit()]))

repository_info = subprocess.check_output(
        "svn info " + svn_url
        )
for line in repository_info.split("\n"):
    if line.lower().startswith("last changed rev"):
        latest_svn_version = int(''.join([s for s in line if s.isdigit()]))
if svn_version < latest_svn_version:
    # Download new
导入子流程
svn_url=。。。
版本\字符串=子流程。检查\输出(“svnversion”)
parts=版本\字符串.拆分(“:”)
svn_version=int(“”.join([s表示部分[-1]中的s,如果s.isdigit()]))
repository\u info=子流程。检查\u输出(
“svn信息”+svn\U url
)
对于存储库中的行\u info.split(“\n”):
如果line.lower().startswith(“上次更改的版本”):
最新版本=int(“”.join([s代表s,如果s.isdigit()]))
如果svn\U版本<最新版本:
#下载新的

确实需要您使用SVN下载您的文件,但是(通过
SVN up
)。

您可以检查SVN版本号。下面是一些适合我的代码:

import subprocess
svn_url = ...
version_string = subprocess.check_output("svnversion")
parts = version_string.split(":")
svn_version = int(''.join([s for s in parts[-1] if s.isdigit()]))

repository_info = subprocess.check_output(
        "svn info " + svn_url
        )
for line in repository_info.split("\n"):
    if line.lower().startswith("last changed rev"):
        latest_svn_version = int(''.join([s for s in line if s.isdigit()]))
if svn_version < latest_svn_version:
    # Download new
导入子流程
svn_url=。。。
版本\字符串=子流程。检查\输出(“svnversion”)
parts=版本\字符串.拆分(“:”)
svn_version=int(“”.join([s表示部分[-1]中的s,如果s.isdigit()]))
repository\u info=子流程。检查\u输出(
“svn信息”+svn\U url
)
对于存储库中的行\u info.split(“\n”):
如果line.lower().startswith(“上次更改的版本”):
最新版本=int(“”.join([s代表s,如果s.isdigit()]))
如果svn\U版本<最新版本:
#下载新的

确实要求您使用SVN下载文件,但是(通过
SVN up
)。

如果您有权访问SVN,您可以使用SVN签出来签出文件,然后运行SVN更新。如果文件已更改,svn update将更新该文件,否则不执行任何操作

import os
import subprocess

os.chdir('/path/to/file')
subprocess.check_call('svn update')

如果您有权访问svn,则可以使用svn checkout签出文件,然后运行svn update。如果文件已更改,svn update将更新该文件,否则不执行任何操作

import os
import subprocess

os.chdir('/path/to/file')
subprocess.check_call('svn update')