我最近恢复了一个意外删除的文件夹。它有.jpg和.tar.gz文件。但是,所有文件现在都附加了某种散列扩展名,并且每个文件都有所不同。文件夹中有600多个文件。所以示例名称将是:
IMG001.jpg.3454637876876978068
IMG002.jpg.2345447786787689769
IMG003.jpg.3454356457657757876
和
folder1.tar.gz.45645756765876
folder2.tar.gz.53464575678588
folder3.tar.gz.42345435647567
我想有一个可以轮流使用的脚本(也许我可以指定扩展名,或者它可以有两个迭代,一个通过.jpg文件,另一个通过.tar.gz)并清理最后一个部分从。开始的文件名。就在号码前面。所以最终的文件名将以.jpg和.tar.gz结尾
到目前为止我在python中的内容:
import os
def scandirs(path):
for root, dirs, files in os.walk(path):
for currentFile in files:
os.path.splitext(currentFile)
scandirs('C:\Users\ad\pics')
显然它不起作用。我将不胜感激任何帮助。我也会考虑使用bash脚本,但我不知道该怎么做。
答案 0 :(得分:0)
shutil.move(currentFile,os.path.splitext(currentFile)[0])
至少我认为......
答案 1 :(得分:0)
以下是我将如何使用正则表达式执行此操作:
import os
import re
pattern = re.compile(r'^(.*)\.\d+$')
def scandirs(path):
for root, dirs, files in os.walk(path):
for currentFile in files:
match = pattern.match(currentFile)
if match:
os.rename(
os.path.join(root, currentFile),
os.path.join(root, match.groups(1)[0])
)
scandirs('C:/Users/ad/pics')
答案 2 :(得分:0)
由于您使用bash标记,我会给您一个答案,删除目录中所有文件/目录的最后一个扩展名:
<?php
//This is your json string
$string = {"57690":{"success":true,"data":{"type":"game","name":"Tropico 4: Steam Special Edition"...
//Turn JSON string into object
$data = json_decode($string);
//Turn your object into an array (easier to work with in this case)
$data = (Array)$data;
//Get name of item with "57690" key
$name = $data["57690"]->data->name;
//Echo the name
echo($name);
//You can also echo out all names of all items like this:
foreach($data as $key => $item)
{
echo($item->data->name);
}