如何在Python中增加输出文件名

时间:2019-02-27 21:33:07

标签: python output filenames

我有一个可以正常工作的脚本,但是当我第二次运行它时却没有,因为它使输出文件名保持不变。我一般对Python和编程都不熟悉,所以请愚蠢的回答一下……然后再愚蠢的回答一下。 :)

arcpy.gp.Spline_sa("Observation_RegionalClip_Clip", "observatio", "C:/Users/moshell/Documents/ArcGIS/Default.gdb/Spline_shp16", "514.404", "REGULARIZED", "0.1", "12")

Spline_shp16是输出文件名的情况下,我希望它在下次运行脚本时另存为Spline_shp17,然后在以后的时间另存为Spline_shp18,等等。

1 个答案:

答案 0 :(得分:0)

如果要在文件名中使用数字,则可以检查该目录中已经存在哪些具有类似名称的文件,取最大的文件,然后将其递增1。然后将此新数字作为变量传递给文件名字符串。

例如:

import glob
import re

# get the numeric suffixes of the appropriate files
file_suffixes = []
for file in glob.glob("./Spline_shp*"):
    regex_match = re.match(".*Spline_shp(\d+)", file)
    if regex_match:
        file_suffix = regex_match.groups()[0]
        file_suffix_int = int(file_suffix)
        file_suffixes.append(file_suffix_int)


new_suffix = max(file_suffixes) + 1 # get max and increment by one
new_file = f"C:/Users/moshell/Documents/ArcGIS/Default.gdb/Spline_shp{new_suffix}" # format new file name

arcpy.gp.Spline_sa(
    "Observation_RegionalClip_Clip",
    "observatio",
    new_file,
    "514.404",
    "REGULARIZED",
    "0.1",
    "12",
)

或者,如果您只想创建唯一的文件名,以便不会覆盖任何内容,则可以在文件名的末尾附加一个时间戳。因此,您将拥有名称类似于“ Spline_shp-1551375142”的文件,例如:

import time

timestamp = str(time.time())
filename = "C:/Users/moshell/Documents/ArcGIS/Default.gdb/Spline_shp-" + timestamp
arcpy.gp.Spline_sa(
    "Observation_RegionalClip_Clip",
    "observatio",
    filename,
    "514.404",
    "REGULARIZED",
    "0.1",
    "12",
)