小编Cpt*_*rkt的帖子

Python:从项目层次结构中同一级别的另一个目录导入模块

我已经看过各种各样的例子和其他类似的问题,但我似乎无法找到一个与我的场景完全匹配的例子.我觉得这总是一个问题,因为有很多类似的问题,但我似乎无法让这个工作"正确".这是我的项目:

user_management  (package)
        |
        |------- __init__.py
        |
        |------- Modules/
        |           |
        |           |----- __init__.py
        |           |----- LDAPManager.py
        |           |----- PasswordManager.py
        |
        |------- Scripts/
        |           |
        |           |----- __init__.py
        |           |----- CreateUser.py
        |           |----- FindUser.py
Run Code Online (Sandbox Code Playgroud)

如果我将"CreateUser.py"移动到主user_management目录,我可以轻松地使用:"import Modules.LDAPManager"导入LDAPManager.py ---这可行.我不能做的(我想做的)是将CreateUser.py保存在Scripts子文件夹中,然后导入LDAPManager.py.我希望通过使用来实现这一目标"import user_management.Modules.LDAPManager.py".这不起作用.简而言之,我可以让Python文件轻松地在层次结构中更深入地查看,但是我无法获得Python脚本来引用一个目录而不是另一个目录.

请注意,我能够使用以下方法解决我的问题:

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import Modules.LDAPManager as LDAPManager
Run Code Online (Sandbox Code Playgroud)

我听说这是不好的做法而且气馁.

脚本中的文件是直接执行的(脚本中的init .py甚至是必要的吗?).我已经读过,在这种情况下,我应该使用-m标志执行CreateUser.py.我已经尝试了一些变体,似乎无法让CreateUser.py识别LDAPManager.py.

python module path package python-2.7

74
推荐指数
3
解决办法
9万
查看次数

完全外部加入与完全加入

只需使用查询和示例来更好地了解联接.我注意到在SQL Server 2008中,以下两个查询给出了相同的结果:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)

这些是完全相同的动作产生相同的结果,还是会在更复杂的例子中遇到不同的结果?这只是可互换的术语吗?

sql t-sql join sql-server-2008

72
推荐指数
3
解决办法
15万
查看次数

为什么.ToString()在空字符串上会导致空错误,当.ToString()在具有空值的可空int上正常工作?

selectedItem 有两个领域:

  • int? _cost
  • string _serialNumber

在这个例子中,_cost_serialNumberselectedItem都是空.我正在阅读通过selectedItem他们的属性的字段,并填写文本框与他们的值,当...

TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
Run Code Online (Sandbox Code Playgroud)

我明白这SerialNumber.ToString()是多余的(因为它已经是一个字符串),但我不明白为什么这会导致这个异常:

可以为空的对象必须具有值.

  • int? _cost 可以为空,并且没有值,但它没有给我例外.
  • string _serialNumber可以为空,并且没有值,但它确实给了我例外.

这个问题触及它,这家伙基本上是在问同样的事情,但是没有指定的答案,而且它也没有解释为什么可以为空int?例如,我可以.ToString()在可空的int上使用但不能在空字符串上使用吗?

c# string int null nullable

69
推荐指数
3
解决办法
7626
查看次数

有没有理由在手动实现的属性上使用自动实现的属性?

我理解PROPERTIES优于FIELDS的优点,但我觉得使用自动实现的属性优于MANUAL实现的属性并不能提供任何其他优势,除了使代码更简洁一些.

我觉得使用起来更舒服:

    private string _postalCode;

    public string PostalCode
    {
        get { return _postalCode; }
        set { _postalCode = value; }
    }
Run Code Online (Sandbox Code Playgroud)

代替:

public string PostalCode { get; set; }
Run Code Online (Sandbox Code Playgroud)

主要是因为如果我想做任何类型的get和set的自定义实现,我必须创建自己的属性,无论如何由私有字段支持.那么为什么不从头开始咬住子弹并立即给予所有属性这种灵活性,以保持一致性?考虑到您在Visual Studio中所做的一切都是单击您的私有字段名称,然后按Ctrl + E,这真的不需要额外的一秒,而且您已经完成了.如果我手动完成,那么我最终会出现不一致的情况,其中有一些手动创建的公共属性由私有字段和一些自动实现的属性支持.随着它的一致性,我感觉好多了,无论是全自动还是全手动.

这只是我吗?我错过了什么吗?我错了什么?我是否过分强调一致性?我总能找到关于C#功能的合理讨论,并且几乎总有优点和缺点,但在这种情况下,我真的找不到任何建议不使用自动实现属性的人.

c# encapsulation field properties

33
推荐指数
2
解决办法
2万
查看次数

View.onDraw()---什么时候被调用?

我将一个Log.d()调用放入我的扩展视图的onDraw()中,这样我就可以看到它被调用的频率和时间.它在实例化视图时被调用,这并不奇怪.但后来我注意到,它会在onTouchEvent()处理的每个tap上被调用,即使我的代码没有做与图形远程相关的任何事情.但是,在Views 的文档中,我似乎无法找到关于何时实际调用onDraw()的任何内容.我并不是真的关心我的特定项目(这不会对我造成问题),我只想知道某个地方是否有列表或显示View的操作顺序,特别是导致onDraw()被调用.

graphics android ondraw

29
推荐指数
3
解决办法
4万
查看次数

Python logging.Formatter():有没有办法修复字段的宽度并左右对齐?

以下是日志记录教程中的日志记录示例:

2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample - INFO - info message
2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample - ERROR - error message
2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message
Run Code Online (Sandbox Code Playgroud)

这种拖尾的锯齿状让我感到厌烦.

我真的希望能够像这样格式化:

2005-03-19 15:38:55,977 - simpleExample -    DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample -     INFO - info message
2005-03-19 15:38:56,054 - simpleExample -  WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample - …
Run Code Online (Sandbox Code Playgroud)

python formatting logging

20
推荐指数
2
解决办法
6259
查看次数

文件名中有分号或左括号时的FileUpload.FileName行为

我有一个FileUpload控件,文件名有一些限制,不允许使用某些字符.以下代码适用于大多数字符,但由于某些原因不适用于其他字符:

if (FileUpload1.HasFile)
{
    if (FileUpload1.FileName.Contains('#') ||
        FileUpload1.FileName.Contains('&') ||
        FileUpload1.FileName.Contains(';') ||
        FileUpload1.FileName.Contains('{') ||
        FileUpload1.FileName.Contains('}') ||
        FileUpload1.FileName.Contains('+'))
    {
        //error: bad character detected
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以用另一个(更好的)方式,用正则表达式来做这个,但首先我真的想知道为什么上面的方法不起作用.

在FileName 检测到以下字符:

# & } +
Run Code Online (Sandbox Code Playgroud)

FileName 中未检测到以下字符:

; {
Run Code Online (Sandbox Code Playgroud)

为什么?

编辑:我尝试过的文件名示例.

  • Final + Version.pdf // +检测到

  • Final; Version.pdf //; 没有检测到

  • WhyHello {there.pdf // {未检测到

  • 策略} 20120303.pdf //}已检测到

正如下面的评论中提到的,字符串上的这些字符没有问题,所以可能是"FileName"的值或FileUploader处理文件名的方式有问题?

编辑2: 断点步骤显示,使用策略{20120303.pdf作为示例,FileName的值是Policies.pdf.所以这不再是.Contains()的问题,而是使用FileUpload和FileName.

所以新问题是,我该如何处理?我不希望有这些字符的文件通过,我不希望提交的文件的名称与用户命名的文件不同.因此,如果有人试图提交'Policies {20120303.pdf',我需要以下两种结果之一:

  1. 检测到无效名称,程序中止
  2. 提交文件的完整原始名称为Policies {20120303.pdf

编辑3: 如果我提交一个具有以下名称的文件:foo; bar {baz.txt,FileUpload.FileName的值为" foo.txt "

编辑4: 感谢下面的一些有用的评论,我尝试使用不同的浏览器(Chrome),它工作得很好!文件名保持不变,即使使用foo; bar {baz.txt.我使用Opera,它没有用.我想这会使浏览器特定问题缩小很多.除非有人有任何想法,否则我认为没有任何方法可以在Opera中正常工作?

c# string contains char

13
推荐指数
1
解决办法
842
查看次数

C# - 单元测试,模拟?

应该使用目标类的内置单元测试生成器(VS),还是应该学习如何编写单元测试?什么是"模拟"的东西?我一遍又一遍地听到,但没有人愿意给出一个很好的解释.

提前致谢.

c# unit-testing mocking

10
推荐指数
1
解决办法
2万
查看次数

自由依赖映射工具具有自动布局调整?

我正在寻找一种工具,可以让我为应用程序,服务器等绘制出依赖关系的地图.我们有很多服务器和很多数据库,没有办法跟踪什么取决于什么. 请注意,我不是在讨论项目中的代码或类依赖项,而是依赖于服务器,数据库等.

当我坐下来创建一个示例地图时,我最终得到了这样的结果:

坏地图

现在,我在纸上或MS Paint中执行此操作时遇到的问题是布局不可调整.例如,如果我在上面的示例中获取了一个节点并移动它,我希望其他行和节点调整到我刚刚移动的那个的新位置.

我检查了一些"思维导图"应用程序,如FreeMind,并发现它过于严格.例如,在该应用程序中,您不能只是自由地绘制东西并连接它,您必须指定节点及其关系(子,父,兄弟).此外,没有能力评论任何事情.例如,在上图中,我希望能够为地图中的每个事物添加注释,但是在点击该对象之前将它们隐藏起来.通过这种方式,我可以写很多关于这段关系及其历史的文字,而不会弄乱地图.

在最基本的层面上,我想要的只是一个超级简单的应用程序,它只是让我绘制正方形,插入文本(和隐藏的注释),并用箭头连接它们,然后允许我移动方块周围和周围正方形和箭头自动调整.

layout dependencies project-management graph

8
推荐指数
1
解决办法
8776
查看次数

是否有可能将代码分解为多个部分文件?

我有一个带有.aspx.cs代码隐藏的.aspx Web窗体.代码隐藏近2000行,并且它已经达到了这样的程度:轻松导航它的唯一方法是在各部分之间放置大量空间,缩小以便我可以看到代码的物理外观,以及然后放大我想要编辑的位置.换句话说,这是一个重大的痛苦.我想将这条2000行拆分成代表代码中概念的不同文件.因此,当我需要在页面的"Employee"jquery选项卡中编辑某些功能时,我可以转到仅包含"Employee"功能的partial类.

在New Item菜单中,我找不到任何其他代码隐藏文件,没有.aspx.cs文件.我尝试创建一个.cs文件,将其重命名为.aspx.cs,并给它相同的部分类名---不行,我看不到默认的部分类的任何方法,也没有看到页.

我理解这个概念,如果你的"阶级",在OOP意义上,那么长,它做得太多了.对于Web表单的代码隐藏而言,我不理解的是"类".表单不能真正分解为更小的形式 - 用户体验需要在一个页面上进行.

c# asp.net webforms coding-style class

7
推荐指数
1
解决办法
5107
查看次数