我是Python的新手,目前正在开发一个应用程序,该应用程序可根据文件夹的名称将文件夹移动到特定目录。
我没有收到任何错误或警告,但该应用程序不会移动文件夹。 这是代码:
INSERT IGNORE INTO searchHistory(searchTerm) VALUES ('test')
注意:我尝试删除“'” + ... +“'”,但也没有用。有什么想法吗?
答案 0 :(得分:2)
在连接文件和目录时不要忘记文件分隔符。
for files in xlist:
#if name in files: EDIT: As pointed out by IosiG, Change here too
if name == files:
shutil.move(directory + files,newdir) #make changes here
directory + '\\' + files.
#or
import os
os.path.join(directory,files)
答案 1 :(得分:0)
您不需要for循环或if语句。您已经在主代码块中标识了该文件。由于您要明确指定目录和文件名,因此无需遍历目录列表即可查找目录。当您希望程序自动查找适合某些特定条件的文件时,这尤其有用。试试这个:
import os
import shutil
def shorting_algorithm():
directory = input("Give the directory you want to search.")
newdir = r'D:\Torrents\Complete\Udemy'
name = "\\" + input("Give the name of you files you want to move.")
print(name)
print(directory)
shutil.move(directory + name,newdir)
shorting_algorithm()
摆脱多余的引号,并在路径中添加斜杠,将newdir转换为原始字符串以避免转义,并摆脱for循环应可使此代码正常工作。我刚刚对其进行了测试,并且可以在这里工作。
答案 2 :(得分:0)
问题是循环,您混合了两种迭代方式。 将发生以下情况:
for files in xlist: #loop through the names of the files
if name in files: # look for the name of your file inside the name of another file
shutil.move(directory + files,newdir)
应该做的是以下事情:
if name in xlist:
shutil.move(directory + name,newdir)
或者也是
for file in xlist: # only reason for this is if you want input check
if str(file) == name:
# do whatever you need
此外,您必须从输入中删除"'" +...+"'"
,因为您正在将这些输入到字符串中,这会使比较变得混乱。
我也建议您使用raw_input代替输入。
答案 3 :(得分:0)
谢谢大家的回答,按照建议使用“ shutil.move(directory +'\'+ files,newdir)”可以轻松解决该问题。
import os
import shutil
def shorting_algorithm():
directory = input("Give the directory you want to search.")
name = input("Give the name of you files you want to move.")
newdir = input("Give the new directory.")
xlist = os.listdir(directory)
for files in xlist:
if name in files:
shutil.move(directory + '\\' + files,newdir)
shorting_algorithm()