这有点像一个简单的问题,但对于我的生活,我无法弄清楚如何从zsh for循环中排除某些东西.例如,假设我们有这个:
for $package in /home/user/settings/*
do
# do stuff
done
Run Code Online (Sandbox Code Playgroud)
让我们说/home/user/settings/
,有一个我想忽略的特定目录("os").从逻辑上讲,我尝试了以下变化:
for $package in /home/user/settings/^os (works w/ "ls", but not with a foor loop)
for $package in /home/user/settings/*^os
for $package in /home/user/settings/^os*
Run Code Online (Sandbox Code Playgroud)
......但这些似乎都不起作用.有人可以指导我的语法正确吗?
我有以下循环来计算当前周的日期并打印出来.它有效,但我在Perl的日期/时间可能性游泳,想要了解是否有更好的方法.这是我写的代码:
#!/usr/bin/env perl
use warnings;
use strict;
use DateTime;
# Calculate numeric value of today and the
# target day (Monday = 1, Sunday = 7); the
# target, in this case, is Monday, since that's
# when I want the week to start
my $today_dt = DateTime->now;
my $today = $today_dt->day_of_week;
my $target = 1;
# Create DateTime copies to act as the "bookends"
# for the date range
my ($start, $end) = ($today_dt->clone(), $today_dt->clone());
if ($today == $target) …
Run Code Online (Sandbox Code Playgroud) 我有一个类函数来连接Last.FM的RESTful API - 它的目的是为我的用户抓取最新的曲目.这里是:
private static $base_url = 'http://ws.audioscrobbler.com/2.0/';
public static function getTopTracks($options = array())
{
$options = array_merge(array(
'user' => 'bachya',
'period' => NULL,
'api_key' => 'xxxxx...', // obfuscated, obviously
), $options);
$options['method'] = 'user.getTopTracks';
// Initialize cURL request and set parameters
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => self::$base_url,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $options,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 30,
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
));
$results = curl_exec($ch);
return $results; …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的脚本来检查各种Linux进程,并找到其中一个,记录一个特定的消息(在引用服务名称方面"特别").
我的问题:使用多条件函数返回布尔值和字符串(用于打印消息)的Pythonic方法是什么?
这是我当前解决方案的精简版(使用元组):
import subprocess
import time
def _isProcessRunning(cmd):
return int(
subprocess.check_output(
'{} | grep -v grep | wc -l'.format(cmd),
shell=True
)
) > 0
def processGroupFound():
if _isProcessRunning('ps auwxx | grep duplicity'):
return (True, 'Duplicity')
elif _isProcessRunning('who | grep pts'):
return (True, 'SSH')
elif _isProcessRunning('netstat -na | grep ESTA | grep 5901'):
return (True, 'VNC')
else:
return (False, '')
def worker():
while True:
process_found, service_string = processGroupFound()
if process_found:
print('{} found; skipping'.format(service_string))
else:
print('Continuing on')
time.sleep(10)
if …
Run Code Online (Sandbox Code Playgroud) 我有一组perl do-do任务看起来像这样:
@todos = (
"1 (A) Complete online final @evm4700 t:2010-06-02",
"3 Write thank-you t:2010-06-10",
"4 (B) Clean t:2010-05-30",
"5 Donate to LSF t:2010-06-02",
"6 (A) t:2010-05-30 Pick up dry cleaning",
"2 (C) Call Chris Johnson t:2010-06-01"
);
Run Code Online (Sandbox Code Playgroud)
第一个数字是任务的ID.如果任务旁边有([AZ]),则定义任务的优先级.我想要做的是以一种将优先级项放在第一位的方式对任务数组进行排序(按优先顺序递减,从A-Z开始):
@todos = (
"1 (A) Complete online final @evm4700 t:2010-06-02",
"6 (A) t:2010-05-30 Pick up dry cleaning",
"4 (B) Clean t:2010-05-30",
"2 (C) Call Chris Johnson t:2010-06-01"
"3 Write thank-you t:2010-06-10",
"5 Donate to LSF t:2010-06-02",
);
Run Code Online (Sandbox Code Playgroud)
我不能使用常规sort()
因为任务旁边的ID,所以我假设需要某种自定义的排序子程序.但是,我对如何在perl中高效地完成此任务的知识很少. …
XSLT版本: 1.0
数据(如何"呈现"):
数据(如何以XML格式存储):
<data>
<item>
<row>Row1</row>
<col>Col2</col>
<value>323</value>
</item>
<item>
<row>Row2</row>
<col>Col1</col>
<value>12</value>
</item>
<item>
<row>Row2</row>
<col>Col2</col>
<value>53</value>
</item>
</data>
Run Code Online (Sandbox Code Playgroud)
请注意Row1/Col1
XML数据中是否完全缺少空的"cell"().
我需要的:
我需要填写"结构"的其余部分,以便空"单元格"在XML中具有相应的空元素:
<data>
<!-- New, "empty" item gets created -->
<item>
<row>Row1</row>
<col>Col1</col>
<value />
</item>
<!-- Output the others as before -->
<item>
<row>Row1</row>
<col>Col2</col>
<value>323</value>
</item>
<item>
<row>Row2</row>
<col>Col1</col>
<value>12</value>
</item>
<item>
<row>Row2</row>
<col>Col2</col>
<value>53</value>
</item>
</data>
Run Code Online (Sandbox Code Playgroud)
抓住:
此示例数据远远小于我的目标数据集.真实数据可能有数百个行和列,空白的"单元格"遍布整个地方.因此,我不能硬编码任何东西.
我的"解决方案"到目前为止:
我考虑过使用Muenchian Grouping来挑选所有独特的列和行名称; 然后,有了这些,我将遍历每个组合(Row1/Col1
,Row2/Col2
等)并检查<item>
源文档中是否存在具有这些值的元素.如果我找到一个,我会复制它(及其后代); 我应该找不到一个,我输出适当的"空"元素.
这对我来说听起来太程序化了(因此我甚至很难创建XSLT文档).一定有更好的方法.
我很感激你能给出的任何指示.:)
更新:
不幸的是,解决方案不能指望其值中具有连续数字的行和列; …
我正在为我所在大学的一个部门设计一个图书管理系统,我想着眼于我提出的架构.这篇文章主要关注我们如何存储每本书的多个副本; 关于我设计的东西让我误解了,我希望你们都能指出更好的方法来解决问题.
为了处理用户查看书籍,我设计了三个表:book,customer和book_copy.这些表之间的关系如下:
表格本身的设计如下:
------------------------------------------------
book
------------------------------------------------
+ id
+ title
+ author
+ isbn
+ etc.
------------------------------------------------
------------------------------------------------
customer
------------------------------------------------
+ id
+ first_name
+ first_name
+ email
+ address
+ city
+ state
+ zip
+ etc.
------------------------------------------------
------------------------------------------------
book_copy
------------------------------------------------
+ id
+ book_id (FK to book)
+ customer_id (FK to customer)
+ checked_out
+ due_date
+ etc.
------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
关于这一点似乎不正确(或者至少对我来说效率低下) - …
问题
想象一下接收字符串的脚本:
http://whatever.org/?title=@Title@¬e=@Note@
......以及令牌列表:
['arg:Title=SampleTitle', 'arg:Note=SampleNote']
将这些标记插入字符串的最Pythonic方法是什么,这样,使用上面的示例,生成以下内容:
http://whatever.org/?title=SampleTitle¬e=SampleNote
我的想法
循环遍历列表,并为其包含的每个字符串拆分令牌名称,并在@TOKEN_NAME
找到的每个实例上执行正则表达式替换.
使用某种模板机制(类似于Ruby可以做的ERB.template
).
救命?
我是Python的新手,非常喜欢专家的观点.谢谢!
我对zsh有一个相当奇怪的问题.当我启动我的shell时,一切 - 功能,环境变量,别名等 - 一切正常.我创建了以下函数并在zsh中获取它:
clean()
{
path=/tmp
for i in ${path}/*; do
echo $i
done
}
Run Code Online (Sandbox Code Playgroud)
运行clean
在终端正常工作,因为它打印出的所有文件在/ tmp /.然而,之后,尝试任何命令 - 例如,ls - 产生这样的:
zsh: command not found: ls
Run Code Online (Sandbox Code Playgroud)
我有几个其他功能正常工作,这让我相信,不知何故,该循环导致问题.无论如何,这是非常令人沮丧的,我真诚地感谢社区的眼睛.谢谢!