我想编译和分发(在.net上)与IronPython兼容的一些python程序,但我对.net并不陌生,并且遇到了与特定python模块相关的错误。有一个实用程序可以编译到较低级别的.net,并且可以正常工作,但是在处理通用库时会出错。在解释器中运行的代码不一定要编译。例如,以下内容利用了基本模块shutil
,getpass
和os
。 getpass.getuser()
以字符串形式返回用户名。 shutil
提供了一种复制功能(尽管我可以用纯python重写并可以编译该功能),而os
在这里用于获取文件夹信息,制作目录和取消链接文件。我如何才能沿着以下几行全部或任何部分调整内容,以仅使用.net本机库?如果有人使用IronPython作为从python到学习.net的桥梁,那么任何相关的技巧都将不胜感激。
import shutil
import os
import getpass
uname = getpass.getuser()
folders = ["/users/"+uname+"/location", "/users/"+uname+"/other_location"]
for folder in folders:
for root, dir, files in os.walk(folder):
for file in files:
file_name = os.path.join(root, file)
time_stamp = os.stat(file_name).st_mtime
time_dict[time_stamp] = file_name
working_list.append(time_stamp)
def sync_up():
for item in working_list:
if item not in update_list:
os.remove(item)
else:
shutil.copy2(item, some_other_folder)
def cp_function(target=some_folder):
if os.path.exists(target):
sync_up()
else:
try:
os.mkdir(target)
sync_up()
except:
print """error connecting
"""
参考方案
.NET中的os
(和shutil
)替换位于System.IO
namespace中。
System.IO命名空间包含允许读取和写入文件和数据流的类型,以及提供基本文件和目录支持的类型。
对于大多数文件文件操作,请尝试System.IO.File
class的方法。
目录信息可通过System.IO.Directory
class获得。
我不知道本机的os.walk
替代方法,请尝试使用GetDirectories
和GetFiles
方法构造您自己的目录遍历器。 Directory.GetDirectories(String)
doc中有一个RecursiveFileProcessor示例。
System.Environment.UserName
属性是检索当前登录用户的用户名的一种简单方法。
一个简单的交互式IronPython示例:
>>> import clr
>>> from System import Environment
>>> Environment.UserName
'gimel'
>>> from System import IO
>>> IO.Directory.GetCreationTimeUtc('c:/')
<System.DateTime object at 0x000000000000002B [02/07/2006 12:53:25]>
>>> IO.Directory.GetLastWriteTimeUtc('c:/')
<System.DateTime object at 0x000000000000002C [09/11/2009 08:15:32]>
>>> IO.Directory.GetDirectories('C:/').Count
24
>>> help(IO.File.Copy)
Help on built-in function Copy:
Copy(...)
Copy(str sourceFileName, str destFileName, bool overwrite)
Copies an existing file to a new file.
Overwriting a file of the same name is allowed.
...
Ajax表单未获得结果 - javascript我有一个带有搜索功能的主页。从主页搜索可以正常工作,但是当我尝试使用ajax表单(在url.com/search?id=biology上)再次搜索时,我被重定向到404页面,提示未找到/Search。主页上的表格:@using (Html.BeginForm("Index", "Search", new { Retur…
调整窗口大小时如何调整YouTube播放器的大小 - php我想显示包含YouTube视频的弹出窗口。我的问题是当用户调整弹出窗口的大小时如何调整YouTube播放器的大小?弹出窗口的头部分PHP / HTML代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/…
选择后显示输入元素 - javascript我有一个表格,其中取决于用户的选择,输入元素是否可见。实际上,用户正在以另一种形式设置已定义的合作伙伴类型,并且如果选中该元素,则允许在该类型的合作伙伴上可见的元素类型1将显示以下元素:<input type="text" id="partner" name="partner" class=&…
Div单击与单选按钮相同吗? - php有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date…
ASP.net C#崩溃一行 - c#我有一个母版页,在on load事件中包含以下几行: string menuIDdata = Page.Request.QueryString["mid"]; menuID = 0; // Get the menu ID if (!int.TryParse(menuIDdata, out menuID)) { menuID = 0; } …