小编MxL*_*evs的帖子

windows批处理文件:在for循环中设置变量

我有许多具有相同命名方案的文件.作为示例,四个文件称为"num_001_001.txt","num_002_001.txt","num_002_002.txt","num_002_003.txt"

第一组数字表示它来自哪个"包",第二组数字仅用于区分它们.所以在这个例子中,我们在包001中有一个文件,在包002中有三个文件.

我正在编写一个windows vista批处理命令来获取所有文件并将它们移动到自己的目录中,其中每个目录代表一个不同的包.所以我想将包001的所有文件移动到目录"001"中,并将002的所有文件移动到目录"002"中

我已成功编写了一个脚本,它将迭代所有txt文件并回显它们.我还编写了一个脚本,将一个文件移动到另一个位置,以及创建目录(如果它不存在).

现在我认为我需要使用子串,所以我使用%var:~start,end%语法来获取它们.作为测试,我写了这个来验证我是否可以实际提取子字符串并有条件地创建目录

@echo off
set temp=num_001_001.txt
NOT IF exist %temp:~0,7%\
  mkdir %temp:~0,7%

它有效.大.
然后我添加了for循环.

@echo off
FOR /R %%X IN (*.txt) DO (
  set temp=%%~nX
  echo directory %temp:~0,7%
)

但这是我的输出:

directory num_002
directory num_002
directory num_002
directory num_002

怎么了?vista不支持在每次迭代中重新分配变量吗?这四个文件在我的目录中,其中一个应该创建num_001.我用003 004 005输入了不同的文件,所有这些都是最后一个包的名字.我猜错了我的设置方式.

我有不同的解决方法来完成工作,但我很困惑为什么这么简单的概念不起作用.

batch-file windows-vista

25
推荐指数
3
解决办法
7万
查看次数

Windows批处理文件:多个if条件

有没有办法说出类似的话

if %1 == 1 or %1 == 2

在批处理文件中?或者,更好的是,如果我可以指定一组候选值,如

if %1 in [1, 2, 3, 4, ... 20]

windows-xp batch-file

25
推荐指数
3
解决办法
8万
查看次数

检查数组是否是Ruby中另一个数组的子集

如何判断一个数组是否是另一个数组的子集,而不管元素的顺序如何?

a1 = [3, 6, 4]
a2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

...?

a1 is a subset of a2
Run Code Online (Sandbox Code Playgroud)

ruby

25
推荐指数
3
解决办法
1万
查看次数

Ruby:模块和超级?

我不明白为什么会这样.

module Base
  attr_reader :first
  def setup
    @first = 1
  end
end

module Addon
  attr_reader :second
  def setup
    #super
    @second = 2
  end
end

class Test
  include Base
  include Addon

  def initialize(num)
    @num = num
    setup
  end
end

a = Test.new(1)
p a.first
p a.second
Run Code Online (Sandbox Code Playgroud)

基本上我有一个"基础"模块,它设置了一些东西.我还有一个插件模块,如果某个类想要包含它,它会设置更多的东西.

现在,当我测试它时,如果我没有那个超级电话,我会得到

nil
2
Run Code Online (Sandbox Code Playgroud)

当我有超级电话时,我明白了

1
2
Run Code Online (Sandbox Code Playgroud)

超级实际上在这做什么?即使Base和Addon不相关,它也会从Base模块调用setup方法.

这是我第一次在模块环境中使用super.以前我总是使用类的超级调用,并认为它只是继承树继续寻找具有相同方法的父级.

是否包含多个模块还设置了某种继承树?

编辑:对于上下文,如果没有Base模块,将永远不会包含Addon模块,并且在任何其他Addon模块之前将始终包含Base模块.

ruby

25
推荐指数
1
解决办法
7843
查看次数

在python中填充具有特定值的列表

可能重复:
一些内置用于填充python中的列表

我有一个方法将返回一个包含4个元素的列表(实例变量).另一种方法用于为列表赋值.

但是目前我无法保证列表中有4个元素,所以我想用0填充它.

除了说一个循环之外,有没有办法用0填充它?

for i in range(4 - len(self.myList)):
   self.myList.append(0)

python list

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

Ruby字符串替换

不知道这个术语叫什么(替换?),但是在python中你输入

num1 = 4  
num2 = 2  
print("Lucky numbers: %d %d" %(num1, num2))
Run Code Online (Sandbox Code Playgroud)

你得到"幸运数字:4 2"

我如何在ruby中执行此操作?

试图做上面的场景,如果我有一个变量,它可以工作,但如果我需要在多个变量中,则括号不是有效的语法.

ruby

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

python eval vs ast.literal_eval vs JSON decode

我将2 MB数据作为字符串转换为字典.输入以JSON序列化.

无论如何我目前正在使用ast.literal_eval并且我得到了我想要的字典,但是当我尝试运行eval时它似乎运行得更快,并且还返回相同的结果.

当eval工作得很好时,有没有理由使用ast模块或json模块?

python

16
推荐指数
3
解决办法
1万
查看次数

Python文件解析:从文本文件构建树

我有一个缩进的文本文件,将用于构建一个树.每行代表一个节点,缩进代表深度以及当前节点是其子节点的节点.

例如,文件可能看起来像

ROOT
   Node1
      Node2
         Node3
            Node4
   Node5
   Node6

这表明ROOT包含三个子节点:1,5和6,Node1有一个子节点:2,Node2有一个子节点:3,等等.

我已经提出了一个递归算法并对它进行了编程并且它可以正常工作,但它有点难看,特别是对上面的例子非常粗略(从节点4到节点5)

它使用"缩进计数"作为递归的基础,因此如果缩进的数量=当前深度+ 1,我会更深一层.但这意味着当我读取一个较少缩进的行时,我必须一次返回一个级别,每次检查深度.

这就是我所拥有的

def _recurse_tree(node, parent, depth):
    tabs = 0

    while node:
        tabs = node.count("\t")
        if tabs == depth:
            print "%s: %s" %(parent.strip(), node.strip())
        elif tabs == depth + 1:
            node = _recurse_tree(node, prev, depth+1)
            tabs = node.count("\t")

            #check if we have to surface some more
            if tabs == depth:
                print "%s: %s" %(parent.strip(), node.strip())
            else:
                return node
        else:
            return node

        prev = node
        node = inFile.readline().rstrip()

inFile = …

python algorithm tree recursion

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

Python:导入"导入文件"

我正在导入很多不同的脚本,所以在我的文件的顶部,它会被import语句弄得乱七八糟,即:

from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...
Run Code Online (Sandbox Code Playgroud)

有没有办法将所有这些移动到其他地方,然后我所要做的就是导入该文件,所以它只是一个干净的导入?

python python-import

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

Amazon S3存储桶策略不支持"版本"选项

我想提供对我桶中所有文件的公共访问.几个SO答案,包括这个流行的一个表示,我要创建一个策略.

所以我去复制粘贴并编辑了资源名称和版本日期,但是我收到了一个错误

Document is invalid: Invalid Version 2014-05-02 - undefined
Run Code Online (Sandbox Code Playgroud)

我去看了一下文档(注意它说的是"最新的"),给出的例子是

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
        "Effect":"Allow",
      "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我接受了,更新了资源名称,并再次尝试.仍然无法正常工作:版本不存在.

然后,我会在对话框的角落注意到"AWS policy generator"的链接.我填写了详细信息,点击"生成",得到了类似的东西

{
  "Id": "Policy1399047197120",
  "Statement": [
    {
      "Sid": "Stmt1399047194777",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucketname/*",
      "Principal": {
        "AWS": [
          "AWS"
        ]
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

它奏效了!很好,所以看起来他们已经决定放弃"版本"选项,除了我在SO上看到的所有示例以及他们的示例中包含这个"版本"选项.

这个版本对我来说并不重要,但这是一个众所周知的变化吗?

amazon-s3 amazon-web-services

14
推荐指数
1
解决办法
3939
查看次数