python - 由于问题而不随机化文件名
问题描述
我开始学习python,我想我应该尝试制作一个程序。所以我尝试制作我的世界纹理随机器。我认为我的代码是有道理的,但是我没有考虑到一个巨大的问题。当我以随机顺序重命名文件时。例如,它不能重命名。“Obsidian.png”->“Endstone.png”作为黑曜石,所以我尝试使用os.mkdir()
并复制文件并将其粘贴到该文件夹中,然后它会重命名该文件,但是仍然有一条消息。只是为了澄清我会这样做,所以它将删除旧文件夹并将新文件夹重命名为相同的名称。
我的代码:
import random
import shutil
def my_shuffle(arr):
random.shuffle(arr)
return arr
os.chdir('C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item')
oldTextures = os.listdir()
newRandomizedTextures = my_shuffle(os.listdir())
print(newRandomizedTextures)
i = 0
os.mkdir("C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item1")
for x in newRandomizedTextures:
shutil.copy('C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item/' + oldTextures[i], 'C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item1')
os.rename('C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item1/' + oldTextures[i], 'C:/Users/PC Specialist/Documents/Python Scripts/r/assets/minecraft/textures/item1/' + newRandomizedTextures[i])
i = i + 1
这是错误:
Traceback (most recent call last):
File "C:\Users\PC Specialist\Documents\Python\pythonProject\main.py", line 16, in <module>
os.mkdir("C:/Users/PC Specialist/Documents/Python Scripts/r/assets\minecraft/textures/item1")
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'C:/Users/PC Specialist/Documents/Python Scripts/r/assets\\minecraft/textures/item1'
解决方案
您最初的错误是由于 mkdir 行。第二次运行脚本时,它将尝试再次创建相同的目录。您可以手动创建目录并删除该行或在其周围放置一个 try/except 并忽略错误:
try:
os.mkdir("/blah")
except FileExistsError:
# ignore
pass
我认为当你测试你的shutil.move时这是一个类似的问题。您应该在运行之间清理目录。
您可以使用一个巧妙的技巧:
for i, newTexture in enumerate(newRandomizedTextures):
print(i)
print(newTexture)
enumerate 会给你索引。
推荐阅读
- api - (Quickbooks Online) 通过 API 触发字段自动填充
- javascript - 管道,带有动态参数的 ramda
- python-3.x - TypeError: 'Not JSON Serializable' while doing tf.keras.Model.save and using keras variable in loss_weights in tf.keras.Model.compile
- javascript - 如何在 JS 中创建一个管理商品的类?
- api - 如何使用 SOAP 请求 XML 请求从日期到日期的字段?
- android - 从适配器类更新片段 TextView
- r - 带有 if 条件的重复循环不起作用
- html - 如何在引导卡之间添加垂直间距
- message - 在 Anylogic 中使用消息发送和接收两个双精度
- php - 尝试在安装后访问 WordPress 时出现错误