所以我正在尝试在python中编写一个脚本,该脚本登录到我的gmail帐户,然后很快在GUI中告诉我该消息是什么.我稍后会对代码做更多的事情,使它有点程序更有用但是现在我只是能够解析我得到的原始信息.这是我的代码:
#Read Email Script
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('username@gmail.com', 'passwordgoeshere')
mail.list()
mail.select("INBOX") # connect to inbox.
result, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, data = mail.fetch(latest_email_id, '(RFC822)')
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
print (email_message['Subject'])
Run Code Online (Sandbox Code Playgroud)
现在基本上应该尝试读出发送到我收件箱的最新电子邮件的主题.但是,我在控制台中收到以下错误消息:
>>>
Traceback (most recent call last):
File "C:/Users/Dhruvin Desai/Documents/Python/script.py", line 21, in <module>
email_message = email.message_from_string(raw_email)
File "C:\Python33\lib\email\__init__.py", line 40, in message_from_string
return Parser(*args, **kws).parsestr(s)
File "C:\Python33\lib\email\parser.py", line 69, in parsestr
return self.parse(StringIO(text), …Run Code Online (Sandbox Code Playgroud) 好的,让我说我有一个文本文件中的地址列表,如下所示:
https://www.amazon.com
https://www.google.com
https://www.msn.com
https://www.google.com
https://www.netflix.com
https://www.amazon.com
...
Run Code Online (Sandbox Code Playgroud)
那里有很多其他东西,但基本上我遇到的问题是在运行之后:
grep "https://" addresses.txt | cut -d"/" -f3
我两次获得amazon.com和google.com.我想只让他们一次.我不知道如何只针对那些独特的东西进行搜索.
好吧,我所处的情况是,我想弄清楚在2013年5月15日这个特定日期之前剩下多少天.日期并不重要,但想法是弄清楚剩下的天数在到达那天之前.
我想做这样的事情(伪代码):
y=$end_year-$cur_year
if [ y -ge 1 ]; then
days=$y*365
else
continue
fi
if [ $end_month -gt $cur_month ]; then
m=$end_month-$cur_month
else
contine
fi
if [ $end_day -gt $cur_day ]; then
d=$end_day-$cur_day
else
continue
fi
result=$days+$m+$d
Run Code Online (Sandbox Code Playgroud)
现在我不知道是否有更简单的方法可以做到这一点,因为我对Linux和shell脚本非常陌生,所以如果有更好的方法可以帮助我.
我对perl完全不熟悉,现在我真的陷入了这个(可能非常简单)的问题.问题本身就是简单的输出问题,我得到的结果应该是它们之前.这是我写的代码:
sub above_average
{
my $average = &average(@_);
foreach my $thing (@_)
{
if ($thing > $average)
{
print $thing;
}
}
}
my @fred = &above_average(1..10);
print "\@fred is @fred\n";
print "(Should be 6 7 8 9 10)\n";
Run Code Online (Sandbox Code Playgroud)
我运行代码时得到的结果是:
678910@fred is
(Should be 6 7 8 9 10)
Run Code Online (Sandbox Code Playgroud)
它应该看起来像@fred is 6 7 8 9 10而不是678910@fred is.我只是不知道如何解决它,我已经好几个小时已经没有运气了.
好的,所以我运行openssl命令来获取过期脚本的日期.这样做给了我这个:
enddate=Jun 26 23:59:59 2012 GMT
Run Code Online (Sandbox Code Playgroud)
然后我把所有东西都切掉,然后离开这个月是"君"
现在,我的脚本的下一部分是告诉用户证书是否已过期,为此我使用if语句,它看起来像这样:
if [ $exp_year -lt $cur_year && $exp_month -lt $cur_month ]; then
echo ""
echo "Certificate is still valid until $exp_date"
echo ""
else
echo ""
echo "Certificate has expired on $exp_date, please renew."
echo ""
fi
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何将月份转换为整数甚至进行比较.我想做蛮力的方式是这样的:
Jan=01
Feb=02
Mar=03
...
Run Code Online (Sandbox Code Playgroud)
很明显,这是一种可怕的方式.有谁知道我能做什么?
基本上我试图从三个文本文件中读取信息,其中包含唯一信息.
文本文件的设置方式如下:
textA.txt
----------------
something.awesome.com
something2.awesome.com
something3.awesome.com
...
textB.txt
----------------
123
456
789
...
textC.txt
----------------
12.345.678.909
87.65.432.1
102.254.326.12
....
Run Code Online (Sandbox Code Playgroud)
现在,当我输出类似这样的东西时它看起来像什么
something.awesome.com : 123 : 12.345.678.909
something2.awesome.com : 456 : 87.65.432.1
something3.awesome.com : 789 : 102.254.326.12
Run Code Online (Sandbox Code Playgroud)
我现在尝试的代码是这样的:
for each in `cat site.txt` ; do
site=`echo $each | cut -f1`
for line in `cat port.txt` ; do
port=`echo $line | cut -f1`
for this in `cat ip.txt` ; do
connect=`echo $this | cut -f1`
echo "$site : $port : $connect"
done …Run Code Online (Sandbox Code Playgroud) 好的,所以我无法弄清楚这一点.就像我使用grep以获取某些信息的文件一样,它设置如下.
#aaaa
<numbers 123456>
blah
blah
blah
#bbbb
<numbers 2156488>
blah
blah
blah
#cccc
<numbers 5478624>
blah
blah
blah
Run Code Online (Sandbox Code Playgroud)
我做的是我greping为aaaa或bbbb或cccc和我真正需要的信息是数字.就像aaaa我想要获得的东西一样,只是它下方的数字.在这种情况下它会123456
我知道如何grep,aaaa但我不知道如何去下一行并削减数字.
所以我有三张桌子.CUSTOMER(CustomerID,LastName,FirstName),PURCHASE(PurchaseID,ItemName)和TRANSACTION(CustomerID,PurchaseID,Date).
我遇到的问题是我需要获得专门购买"Paint"和"Books"两个项目的客户的全名,但是当我运行我的代码时,没有任何问题出现.这是我有的:
SELECT CUSTOMER.FirstName, CUSTOMER.LastName
FROM CUSTOMER, PURCHASE
WHERE PURCHASE.Item = 'Paint' AND PURCHASE.Item = 'Books'
GROUP BY CUSTOMER.LastName, CUSTOMER.FirstName;
Run Code Online (Sandbox Code Playgroud)
请帮助,我真的很新,我真的很想得到一些帮助.
所以我有一个看起来像这样的文本文件:
1,989785345,"something 1",,234.34,254.123
2,234823423,"something 2",,224.4,254.123
3,732847233,"something 3",,266.2,254.123
4,876234234,"something 4",,34.4,254.123
...
Run Code Online (Sandbox Code Playgroud)
我正在运行此代码:
file = open("file.txt", 'r')
readFile = file.readline()
lineID = readFile.split(",")
print lineID[1]
Run Code Online (Sandbox Code Playgroud)
这让我可以通过","分解我的文本文件中的内容,但是我想要做的是将它分成列,因为每行中都有大量的ID和其他内容.我如何将文本文件拆分成列并逐个调用列中的每一行?