Чтение информации из текстового файла в CGI
У меня есть текстовый файл text1.txt
который содержит:
username
password
Как я могу прочитать эти параметры из text1.txt
в мой .cgi
скрипт?
Я использую этот код:
f = open('text1.txt', "r")
user = f.readline()
pass = f.readline()
$MAIN_AUTH = 'user':'pass' ;
Это не работает.
Если я напрямую вставляю пользователя и пропускаю это работает:
$MAIN_AUTH = 'username:password' ;
Но при чтении из текстового файла это не работает.
2 ответа
Общая логика, которую вы используете, почти в порядке, но синтаксис - нет, и есть некоторые детали. Потому что ты сказал линию $MAIN_AUTH = 'username:password';
работает, я полагаю, у вас есть код Perl. Начальные переменные с $
не допускается в Python (afaik).
- Всегда добавлять
use strict; use warnings 'all';
в верхней части ваших скриптов Perl. Он сообщит вам о наиболее распространенных ошибках в вашем скрипте. - Укажите полный путь к вашему входному файлу, потому что вы не можете быть уверены в текущем каталоге, когда ваш скрипт cgi запускается Apache (или кем бы то ни было), и сценарий будет ожидать его относительно этого рабочего каталога, если вы не укажете абсолютный путь,
- Проверьте код возврата
open
чтобы увидеть, сработало ли это. - При чтении строки из файла строка все еще имеет символ новой строки в конце, поэтому удалите ее для дальнейшей обработки, применив
chomp
к каждой строке.
В целом я в конечном итоге с этим:
#!/usr/bin/env perl
use strict;
use warnings 'all';
open( my $fh, '<', '/path/to/text1.txt' ) or die "Cannot open file: $!\n";
my ($user, $pass) = (<$fh>, <$fh>); # read first two lines
chomp($user, $pass); # strip off trailing "\n" from both
close($fh);
my $MAIN_AUTH = "$user:$pass";
print "'$MAIN_AUTH'\n";
Выход:
'username:password'
У вас будет перевод строки в конце двух переменных, если вы используете readline()
,
Итак, если это Python, вам нужно будет позвонить rstrip()
и если Perl, вам понадобится chomp()
,