您好,我一直在尝试使其适应我的需求,但我只是 python 的新手,我有一个包含多个列和行的 csv 文件,重要的列是 1 = 文件的旧名称,2 = 文件的新名称文件,所以我需要转到 csv 文件中列出的文件所在的目录并将它们重命名为第 2 列的新名称,正如我所说,我已经尝试了很多方法但没有成功,我粘贴了我所做的最后一个代码你有一个想法:
import os, unicodecsv as csv, sys
IDs = {}
#open and store the csv file
with open('documentos_corpus_ladino.csv','rb') as csvfile:
timeReader = csv.reader(csvfile, delimiter = ',')
# build a dictionary with the associated IDs
for row in timeReader:
IDs[ row[0] ] = row[1]
# #get the list of files
path = 'txt_orig/'
tmpPath = 'txt_tmp/'
for filename in os.listdir('txt_orig/'):
oldname = filename
newname = filename.replace(oldname, …Run Code Online (Sandbox Code Playgroud) 我只是想将文件扩展名更改为 .doc。我正在尝试下面的代码,但它不起作用。怎么来的?我正在使用这里的说明
startingDir<-"C:/Data/SCRIPTS/R/TextMining/myData"
filez<-list.files(startingDir)
sapply(filez,FUN=function(eachPath){
file.rename(from=eachPath,to=sub(pattern =".LOG",replacement=".DOC",eachPath))
})
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
DD17-01.LOG DD17-02.LOG DD17-03.LOG DD17-4.LOG DD17-5.LOG DD37-01.LOG DD37-02.LOG DD39-01.LOG DD39-02.LOG DD39-03.LOG
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud) 当我重命名一个重命名文件的类时,在 intellij 中它会自动在 git 中暂存重命名的文件。
我希望 Intellij 停止这样做。有谁知道是否以及如何改变这种自动行为?
笔记:
我有 intellij 配置,这样当我创建一个新文件时,它会询问它是否应该将它添加到 git。如此处所述:Intellij Idea 能否自动阶段性更改
但是在重命名类/文件时,它不会询问任何内容
下面的代码可以工作。
$zip = new ZipArchive;
if($zip->open($path) === TRUE) {
$zip->renameName('list.csv', 'list'.$batch_id.'.csv');
$zip->extractTo('list_output');
$zip->close();
}
Run Code Online (Sandbox Code Playgroud)
zip 内的文件已重命名,但未解压。如果我删除 renameName 行,那么它会正常提取。我需要它来完成这两件事。
我python3.3在win7中运行脚本。在运行结束时,我删除了一个 copyFile 并将 tempFile 重命名为 copyFile,如下所示:
os.remove(scancpName)
os.rename(scantmpName, scancpName)
Run Code Online (Sandbox Code Playgroud)
虽然我在重命名之前删除了旧的 copyFile,但我接到了电话:
FileExistsError: [WinError 183] 当该文件已存在时无法创建文件
我在这里错过了什么吗?
我最近遇到了一个问题,即一个空文件在两个分支中以不同方式重命名但合并时没有引发冲突.
重新创建的步骤如下.
创建一个空文件.
git init
touch empty
git add empty
git commit -m "add empty file"
Run Code Online (Sandbox Code Playgroud)在分支中重命名它.
git checkout -b branch
git mv empty empty-in-branch
git commit -m "empty -> empty-in-branch"
Run Code Online (Sandbox Code Playgroud)在主服务器中以不同方式重命名.
git checkout master
git mv empty empty-in-master
git commit -m "empty -> empty-in-master"
Run Code Online (Sandbox Code Playgroud)合并分支到主人.
git merge --no-commit branch
Run Code Online (Sandbox Code Playgroud)这给出了消息Automatic merge went well; stopped before committing as requested.
git status只显示新文件empty-in-branch.但是没有删除,empty-in-master所以如果我们在这个阶段提交,我们将获得这两个文件.
我希望这会被标记为需要手动解决的合并冲突(即决定保留哪个空文件).如果原始文件非空,那就会发生这种情况.
有关影响重命名检测的空文件有什么特别之处吗?我可以添加任何参数git merge来检测冲突(例如调整合并策略)吗?
我正在尝试使用 Groovy 重命名目录中的文件,但我似乎无法理解它是如何工作的。
这是我的脚本:
import groovy.io.FileType
def dir = new File("C:/Users/????/Downloads/Busta_Rhymes-Genesis-(Retail)-2001-HHI")
def replace = {
if (it == '_') {
' '
}
}
String empty = ""
dir.eachFile (FileType.FILES) { file ->
String newName = file.name
newName = newName.replaceAll(~/Busta_Rhymes/, "$empty")
newName = newName.replaceAll(~/feat/, "ft")
newName = newName.replaceAll(~/-HHI/, "$empty")
newName = newName.replaceAll(~/--/, "-")
newName = newName.collectReplacements(replace)
file.renameTo newName
println file.name
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,文件的名称没有按预期更改。我想知道我怎么能让这个工作。
我有 4 个文件要重命名:
./01:
I0010001 I0020001
./02:
I0010001 I0020001
Run Code Online (Sandbox Code Playgroud)
我想为.dcm每个文件添加辅助文件名,所以我尝试过:
$ mv \(*/*\) \1.dcm
mv: cannot stat '(*/*)': No such file or directory
$ mv \(./*/*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv \(./\*/\*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv "\(./*/*\)" "\1.dcm"
mv: cannot stat '\(./*/*\)': No such file or directory
$ mv 0\([1-2]\)/I00\([1-2\)]0001 0\1/I00\20001.dcm
mv: cannot stat '0([1-2])/I00([1-2)]0001': No such file or directory
$ mv "0\([1-2]\)/I00\([1-2\)]0001" …Run Code Online (Sandbox Code Playgroud) 我有一个可能看起来像的目录结构
Data
Current
A
B
C
Previous
A
X
Run Code Online (Sandbox Code Playgroud)
在尽可能简单/快速的步骤中,我想重命名Current为Previous包含内容并擦除原始内容,使其现在:
Data
Previous
A
B
C
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
from pathlib import Path
src = Path('Data/Current')
dest = Path('Data/Previous')
src.replace(dest)
Run Code Online (Sandbox Code Playgroud)
文档让我希望这会起作用:
如果target指向现有文件或目录,则将无条件地替换它.
但它似乎确实是有条件的.我得到一个Directory not empty例外.我想我可以先递归删除Previous目录.这基本上是唯一的解决方案吗?或者有更好的方法来实现这一目标吗?
(我更喜欢pathlib,但如果os或者shutil是更好的锤子,我不反对他们)
(我在Linux上运行)
假设我有以下文件:
a_b.txt a_b_c.txt a_b_c_d_e.txt a_b_c_d_e_f_g_h_i.txt
Run Code Online (Sandbox Code Playgroud)
我想以这样的方式重命名它们,我将它们的文件名分开_并保留第一个和最后一个字段,所以我最终得到:
a_b.txt a_c.txt a_e.txt a_i.txt
Run Code Online (Sandbox Code Playgroud)
以为这很容易,但我有点卡住了......
我尝试rename使用以下正则表达式:
rename 's/^([^_]*).*([^_]*[.]txt)/$1_$2/' *.txt
Run Code Online (Sandbox Code Playgroud)
但是我真正需要做的是实际拆分文件名,所以我想到了awk,但我对它并不那么精通......这就是我目前所拥有的(我知道在某些时候我应该指定FS="_"并抓住第一个和最后一个字段不知何故......
find . -name "*.txt" | awk -v mvcmd='mv "%s" "%s"\n' '{old=$0; <<split by _ here somehow and retain first and last fields>>; printf mvcmd,old,$0}'
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?我没有首选方法,但使用它来学习会很好awk。谢谢!