我是python的新手,我正在编写一些脚本来自动从FTP服务器等下载文件.我想显示下载的进度,但我希望它保持在相同的位置,例如:
输出:
正在下载文件FooFile.txt [47%]
我试图避免这样的事情:
Downloading File FooFile.txt [47%]
Downloading File FooFile.txt [48%]
Downloading File FooFile.txt [49%]
Run Code Online (Sandbox Code Playgroud)
我应该怎么做呢?
我正在尝试组织一些模块供我自己使用.我有这样的事情:
lib/
__init__.py
settings.py
foo/
__init__.py
someobject.py
bar/
__init__.py
somethingelse.py
Run Code Online (Sandbox Code Playgroud)
在lib/__init__.py,我想定义一些类,如果我导入lib使用.但是,如果不将类分成文件,并将其导入,我似乎无法弄明白__init__.py.
而不是说:
lib/
__init__.py
settings.py
helperclass.py
foo/
__init__.py
someobject.py
bar/
__init__.py
somethingelse.py
from lib.settings import Values
from lib.helperclass import Helper
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
lib/
__init__.py #Helper defined in this file
settings.py
foo/
__init__.py
someobject.py
bar/
__init__.py
somethingelse.py
from lib.settings import Values
from lib import Helper
Run Code Online (Sandbox Code Playgroud)
是可能的,还是我必须将类分成另一个文件?
好吧,如果我从另一个脚本导入lib,我可以访问Helper类.如何从settings.py访问Helper类?
此处的示例描述了包内引用.我引用"子模块经常需要互相引用".在我的例子中,lib.settings.py需要Helper,而lib.foo.someobject需要访问Helper,那么我应该在哪里定义Helper类?
举个例子:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
Run Code Online (Sandbox Code Playgroud)
来自C#背景,我希望输出为
Base __construct
Child __construct
但是,实际输出只是
孩子__construct
我有一个SQL Server 2000,其中包含一个包含image列的表.
如何通过指定文件的路径将文件的二进制数据插入该列?
CREATE TABLE Files
(
FileId int,
FileData image
)
Run Code Online (Sandbox Code Playgroud) 我试图搞清楚MVC框架,所以请耐心等待.
现在,我唯一使用会话存储的是存储当前登录的用户.我的网站很简单.对于此示例,请考虑三个域对象:Person,Meeting和File.用户可以登录并查看会议的"仅限会员"个人资料,并可以向其添加文件,或查看会议的公共"个人资料"(如果他们未登录).
因此,从会议的私人资料中,登录用户,我有一个"添加文件"链接.此链接路由到FileContoller.Add(int meetingId).通过此操作,我获得了用户希望使用会议ID添加文件的会议,但在发布表单后,我仍然需要知道用户正在向哪个会议添加文件.这就是我的问题所在,我应该通过TempData传递"当前正在与之交互"会议,还是将其添加到会话存储中?
这就是我目前的添加操作设置,但它不起作用:
public ActionResult Add(int meetingId)
{
try
{
var meeting = _meetingsRepository.GetById(meetingId);
ViewData.Model = meeting;
TempData[TempDataKeys.CurrentMeeting] = meeting; /* add to tempdata here */
}
catch (Exception)
{
TempData[TempDataKeys.ErrorMessage] = "Unable to add files to this meeting.";
return RedirectToRoute("MeetingsIndex");
}
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
var member = Session[SessionStateKeys.Member] as Member;
var meeting = TempData[TempDataKeys.CurrentMeeting] as Meeting; /* meeting ends up null here */
if (member == null)
{
TempData[TempDataKeys.ErrorMessage] = "You …Run Code Online (Sandbox Code Playgroud) 我想迭代匹配类似的目录中的所有文件somefiles*.txt.
有boost::filesystem没有内置的东西,或者我需要一个正则表达式或每个东西leaf()?
我正在使用构建器模式来分离一堆不同的配置可能性.基本上,我有一堆名为ID的类(类似于ID12345).这些都继承自基础构建器类.在我的脚本中,每次运行此应用程序时,我都需要为每个类(大约50个)实例化一个实例.所以,我试图看看是否代替做这样的事情:
ProcessDirector = ProcessDirector()
ID12345 = ID12345()
ID01234 = ID01234()
ProcessDirector.construct(ID12345)
ProcessDirector.construct(ID01234)
ID12345.run()
ID01234.run()
Run Code Online (Sandbox Code Playgroud)
我可以做这样的事情(我知道这不起作用):
IDS = ["ID12345", "ID01234"]
ProcessDirector = ProcessDirector()
for id in IDS:
builder = id() #some how instantiate class from string
ProcessDirector.construct(builder)
builder.run()
Run Code Online (Sandbox Code Playgroud)
这样,当我需要在将来添加一个新的时,我所要做的就是将ID添加到IDS列表中,而不是在整个代码中添加新的ID.
看起来根据数据的来源,有一些不同的意见.这些ID输入到其他人无法访问的文件中.我不是从命令行读取字符串,并且我希望将来在添加新ID时能够进行少量更改.
我显然已经习惯了一个糟糕的编码习惯.这是我写的代码示例:
using(StreamReader sr = new StreamReader(File.Open("somefile.txt", FileMode.Open)))
{
//read file
}
File.Move("somefile.txt", "somefile.bak"); //can't move, get exception that I the file is open
Run Code Online (Sandbox Code Playgroud)
我认为,因为using条款明确要求Close(),并Dispose()在StreamReader该FileStream会也关闭.
我能解决问题的唯一方法是将上面的块更改为:
using(FileStream fs = File.Open("somefile.txt", FileMode.Open))
{
using(StreamReader sr = new StreamReader(fs))
{
//read file
}
}
File.Move("somefile.txt", "somefile.bak"); // can move file with no errors
Run Code Online (Sandbox Code Playgroud)
应该StreamReader通过在第一个区块中关闭而关闭底层FileStream?或者,我错了吗?
我决定发布实际的违规代码块,看看我们是否可以深入了解这一点.我现在很好奇.
我以为我在using条款中遇到了问题,所以我把所有内容都扩展了,每次都无法复制.我在这个方法调用中创建了文件,所以我认为其他任何文件都没有打开句柄.我还验证了Path.Combine调用返回的字符串是否正确.
private static void GenerateFiles(List<Credit> credits)
{
Account i; …Run Code Online (Sandbox Code Playgroud) 我确信这与IIS有关,但我无法弄明白.
我有一个使用表单身份验证的网站.当我的网站尝试访问任何文件资源(javascript文件,css等)时,我被重定向到我的web.config中设置的表单登录页面.如果我只是在地址栏中键入地址,我也会被重定向.
表单身份验证的web.config条目非常基本:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
还有两个位置节点可以拒绝来自站点其他部分的用户:
<location path="n2">
<system.web>
<authorization>
<allow roles="Editors" />
</authorization>
</system.web>
</location>
<location path="web.config">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
我在Windows Server 2008 R2上使用标准的IIS7安装.
编辑
所以,如果我添加一个随机的auth cookie(FormsAuthentication.SetAuthCookie()),资源变得可用,我知道它必须是我的身份验证模型,不知何故搞砸了.它适用于另一台服务器(我只是复制了它).我有什么想法可以追踪问题吗?
我有一项服务,用户可以配置为在"非高峰"时段运行.他们可以设置服务可以运行的时间范围.
例如:
用户A上午8点至下午5点工作,因此他们希望安排应用程序在下午5:30至7:30之间运行.
用户B工作时间为晚上9点至早上6点,因此他们安排应用程序在早上6:30到晚上8:30之间运行.
关键是应用程序使用他们的计算机而不是.
给定当前时间的DateTime,开始的DateTime和停止时间的DateTime,如何检查当前时间是否在开始和停止之间.
对我来说棘手的部分是时间可以越过午夜边界.
python ×3
asp.net-mvc ×2
c# ×2
boost ×1
c++ ×1
datetime ×1
dispose ×1
filestream ×1
filesystems ×1
iis-7 ×1
packages ×1
php ×1
reflection ×1
session ×1
sql-server ×1
streamreader ×1
t-sql ×1
tempdata ×1