Python 排序应用程序版本号
我是初学者。我想写一个脚本来清理Google Chrome应用程序文件夹中的旧版本,我想知道如何高效地“排序”应用程序版本号。最好的方法是什么 下面是我的“春季大扫除”脚本:Python 排序应用程序版本号,python,Python,我是初学者。我想写一个脚本来清理Google Chrome应用程序文件夹中的旧版本,我想知道如何高效地“排序”应用程序版本号。最好的方法是什么 下面是我的“春季大扫除”脚本: 或者,如何改进此脚本?任何建议都会有帮助,因为我在Python中真的毫无用处。我对这个问题的回答直接转换成Python: 您可以使用此比较算法对列表进行排序。我的直觉是,我对虚线字符串值的稳定排序,从最低有效到最高,将其视为int值,比多次运行“Comparator”函数作为典型“collections”排序的辅助方法更
或者,如何改进此脚本?任何建议都会有帮助,因为我在Python中真的毫无用处。我对这个问题的回答直接转换成Python:
您可以使用此比较算法对列表进行排序。我的直觉是,我对虚线字符串值的稳定排序,从最低有效到最高,将其视为int值,比多次运行“Comparator”函数作为典型“collections”排序的辅助方法更有效?(例如,某些类型的快速排序、其他类型的合并排序等)如果您知道数字中有多少节,则可以将它们转换为可比较的值。但除非你做了数千次,否则这根本不会有多大影响。计算机是用来计算事物的!我是一个只有高中学历的初学者。我把计算机科学作为一种爱好来练习,我永远也找不到这方面的工作。既然是为了好玩,我想学着把它做好。我真的不喜欢“把东西扔到电脑上计算”的想法,如果我能锻炼我的大脑并在那里找到解决方案,或者向这里的其他用户学习,仅仅因为电脑可以做浪费性的计算。。“快”:)我完全理解。每个人都有这种感觉。我所建议的是一种正确的方法。有很多正确的方法可以做到这一点。在你花多长时间做这件事和电脑花多长时间做这件事之间,总有一个权衡(即使你是为了好玩而做的)。两个小时的时间来节省两微秒的计算时间是值得考虑的。编程技能还包括做出这样的决策!比较适合CPU寄存器的两个整数将花费最少的O(1)时间。其他一切都需要一系列操作,可能是递归的,也可能是复杂的。例如,对字符串列表进行排序需要进行大量的字符串比较,每个字符串的比较可以是O(N)。
import os
import sys
import re
import operator
import shutil
GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY=r'C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application'
REGEX_GOOGLE_CHROME_APPLICATION_VERSION = '^(\d+)\.(\d+)\.(\d+)\.(\d+)$'
def sorted_by_version_number(versions_list):
version_elements = len(versions_list[0])
for index in range(version_elements-1, 0, -1):
key = operator.itemgetter(index)
versions_list.sort(key=key, reverse = True)
return versions_list
def delete_old_google_chrome_versions():
REGEX = re.compile(REGEX_GOOGLE_CHROME_APPLICATION_VERSION)
application_versions = []
for filename in os.listdir(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY):
filepath = os.path.join(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY,
filename)
if os.path.isdir(filepath):
match = REGEX.match(filename)
if match:
version = (v1, v2, v3, v4) = [int(match.group(i)) for i in range(1, 5)]
application_versions.append(version)
versions_to_delete = sorted_by_version_number(application_versions)[1:]
for application_version in versions_to_delete:
directory_name = '.'.join([str(v) for v in application_version])
directory_path = os.path.join(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY,
directory_name)
print('Deleting Google Chrome application directory: {}...'.format(
directory_path))
# shutil.rmtree(directory_path)
def main():
delete_old_google_chrome_versions()
if __name__ == '__main__':
main()