Здесь вы можете обнаружить полное имя типа исключения, результат здесь дает System.Management.Automation.ArgumentTransformationMetadataException, как указано @Adrian Wright.
Clear-Host
try {
[xml]$xml = Get-Content "c:\Temp\1.cs" # line 2
}
catch {
# Discovering the full type name of an exception
Write-Host $_.Exception.gettype().fullName
Write-Host $_.Exception.message
}
Вы можете искать в строке \ r \ n
. Это конец строки в стиле DOS.
РЕДАКТИРОВАТЬ: Взгляните на это
Как полный новичок в Python и просто для развлечения, я попытался найти какой-то минималистичный способ проверки этого для одного файла. Кажется, это работает:
if "\r\n" in open("/path/file.txt","rb").read():
print "DOS line endings found"
Edit: упрощено в соответствии с комментарием Джона Мачина (нет необходимости использовать регулярные выражения).
Python может автоматически определять, какая конвенция новой строки используется в файле, благодаря "универсальному режиму новой строки" (U
), и вы можете получить доступ к догадке Python через newlines
атрибут файловых объектов:
f = open('myfile.txt', 'U')
f.readline() # Reads a line
# The following now contains the newline ending of the first line:
# It can be "\r\n" (Windows), "\n" (Unix), "\r" (Mac OS pre-OS X).
# If no newline is found, it contains None.
print repr(f.newlines)
Это дает окончание новой строки первой строки (Unix, DOS, и т.д.). ), если таковое имеется.
Как отметил Джон М., если у вас случайно есть патологический файл, в котором используется более одной кодировки новой строки, f.newlines
- это кортеж со всеми кодировками новой строки, найденными на данный момент, после чтения многих строк.
Ссылка: http://docs.python.org/2/library/functions.html#open
Если вы просто хотите преобразовать файл, вы можете просто сделать:
with open('myfile.txt', 'U') as infile:
text = infile.read() # Automatic ("Universal read") conversion of newlines to "\n"
with open('myfile.txt', 'w') as outfile:
outfile.write(text) # Writes newlines for the platform running the program
(только Python 2 :) Если вы просто хотите читать текстовые файлы в формате DOS или Unix, это работает:
print open('myfile.txt', 'U').read()
То есть "универсальный" читатель файлов Python будет автоматически использовать все разные маркеры конца строки, переводя их в "\ n".
http://docs.python.org/library/functions.html#open
(Спасибо, ручка!)
Использование grep и bash:
grep -c -m 1 $'\r$' file
echo $'\r\n\r\n' | grep -c $'\r$' # test
echo $'\r\n\r\n' | grep -c -m 1 $'\r$'
разрывы строк в dos: \ r \ n
, только unix \ n
. Так что просто ищите \ r \ n
.