在 C# / Python 中重命名远程文件服务器上的文件
Posted
技术标签:
【中文标题】在 C# / Python 中重命名远程文件服务器上的文件【英文标题】:Renaming a file on a remote file server in C# / Python 【发布时间】:2011-01-07 18:35:47 【问题描述】:我需要重命名 Windows 文件服务器上的一大堆文件 - 我不介意我真正使用哪种语言,只要它快速简单!
我知道这是基本的,但只是为了澄清 - 在伪代码中......
server = login (fileserver, creds)
foreach (file in server.navigateToDir(dir))
rename(file)
如果我是本地用户,我知道如何在 Python/C# 中执行此操作,但不知道是否可以使用 Python 远程执行此操作。我已经搜索了代码 sn-ps/help 但还没有找到。
谢谢。
【问题讨论】:
在代码中进行服务器登录相当冒险,简单的方法是将驱动器映射到共享文件夹并以与本地文件相同的方式处理它。您是否正在寻找一种方法来让服务器远程重命名文件而无需从客户端访问任何文件? 如果它是 hacky/风险代码,我很高兴 - 这只是对我的用户目录中的许多文件执行一次性批处理。这将从客户端运行。将驱动器映射到文件夹是个好主意,我会试试看。 Lazarus - 将驱动器映射到工作文件夹。如果你想建议它作为我问题的答案,我会给你功劳。谢谢。 【参考方案1】:看看pyfilesytem,它为本地和远程文件系统提供了一致的接口。
【讨论】:
【参考方案2】:如果您需要本地执行代码的性能,您还可以使用 PSEXEC 在服务器上远程执行代码。见http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
【讨论】:
【参考方案3】:以下重命名给定文件夹路径的每个子目录中的文件。它将文件从给定的文件名(例如“blah.txt”)重命名为文件夹名+扩展名。
注意。 Z 可以是本地驱动器或网络驱动器(即,如果文件夹在文件服务器上,则将网络驱动器映射到它)。
例如从外壳...
python renamer.py "Z:\\FolderCollectionInHere" blah.txt csv
... 将“Z:\FolderCollectionHere”的每个直接子目录中的文件“blah.txt”重命名为 .csv。
import os
import sys
class Renamer:
def start(self, args):
os.chdir(args[1])
dirs = os.listdir(".")
for dir in dirs:
try:
os.rename(dir + "\\" + args[2], dir + "\\" + dir + "." + args[3])
print "Renamed file in directory: " + dir
except Exception:
print "Couldn't find file to rename in directory: " + dir
Renamer().start(sys.argv)
【讨论】:
【参考方案4】:使用 \\servername\sharename\somefile.foo 作为文件名 - 只要您有权连接到它并在 Windows 上运行。
您还可以映射网络驱动器并将其视为任何其他本地驱动器 (y:\sharename\somefile.foo)
【讨论】:
使用像 \\servername\sharename\somefile.foo 这样的直接路径不起作用。以上是关于在 C# / Python 中重命名远程文件服务器上的文件的主要内容,如果未能解决你的问题,请参考以下文章